1. 원리
원칙은 매우 간단합니다. Jlabel과 Jpanel 일뿐입니다. Jlabel은 제목 텍스트와 사진이 현재 컨트롤이 확장되었는지 또는 무너진 상태인지를 나타내는 그림을 표시합니다. JPANEL은 주로 하나의 기능 (컨트롤을 운반하는 컨테이너)을 가지고 있습니다. Jlabel은 마우스 이벤트에 응답하여 JPANEL이 표시되는지 여부를 제어합니다. 이렇게하면 폴딩 또는 팽창의 효과가 달성됩니다.
나는 아래에서 많이 말하지 않을 것입니다. 자세한 샘플 코드를 살펴 보겠습니다.
2. 코드
공개 클래스 jshrinkablePanel은 JPanel {private jlabellabel; private stringtitle = ""; private jpanelcontentpanel = null; private boolean isexpanded = true; private jlistlist = new Jlist (); private iconiconexpand = null; private iconiconcollapse = null; jshrickable public; ContentPanel) {super (); this.title = title; this.contentPanel = contentPanel; initComponents (); initComponentsStatus (); initLayout (); initResources (); unregisterevents (); Regtovents ();} 개인 void initcomponents () {this.label = new jlabel (); initcomponentsstatus () {this.label.sethorizontalalignment (jlabel.left); this.label.setverticalalignment (jlabel.center); this.label.setverticaltextPosition (jlabel.center); this.label.setbackgroun ImageIcon("src/Resources/Expand.png");this.iconCollapse =new ImageIcon("src/Resources/Collapse.png");}private void initLayout() {this.setLayout(new GridBagLayout());this.add(this.label,new GridBagConstraints(0,0,1,1,1,0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,new Insets(0,0,0,0),0,0));this.add(this.contentPanel,new GridBagConstraints(0,1,1,1,1,0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,new insets (0,0,0,0), 0,0));} private void initResources () {this.label.seticon (this.iconexpand); this.label.settext (this.title);} private void unregisterevents () {this.label.removemouselistener (this.mouseelistener);} {this.label.addmouselistener (this.mouselistener);} private mouselistenermouselistener = new MouseAdapter () {@overridepublic void mouseclicked (mouseevent e) {isexpanded =! isexpanded; panelvisible ()}@reveridepublic void mousousedered (mouseepublic e) {label.setopaque (true); label.repaint ();}@atriadepublic void mouseexited (mouseevent e) {label.setopaque (false); label.repaint ();}}; private void pantible () {this.contentpanel.setvisible (this.label.label.label.label.label ? this.iconexpand : this.iconcollapse);} public static void main (string [] args) {jframe jf = new jframe ( "jshrinkablepanel"); jf.setbounds (400,200,400,300); JPANEL (); PANEL.ADD (New JBUTTON ( "Show for Show")); Panel.SetBorder (BorderCatory.CreateTitleDborder ( "Border")); JSHRINKABLEPANEL SCROLLPANE = NEW JSHRINKABLEPANEL ( "TESTJSHRINKALEPANEL", PANEL);3. 효과
패널은 제목 레이블의 마우스를 확장합니다
패널은 타이틀 레이블이 아닌 마우스를 확장합니다
제목 레이블의 패널 접기 마우스
패널 접이식 마우스는 제목 레이블에 없습니다
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.