1. หลักการ
หลักการนั้นง่ายมาก: มันเป็นเพียง Jlabel และ JPanel JLabel แสดงข้อความชื่อเรื่องและรูปภาพที่ระบุว่าการควบคุมอยู่ในสถานะที่ขยายหรือยุบ ในขณะที่ JPanel ส่วนใหญ่มีฟังก์ชั่นเดียว - คอนเทนเนอร์ที่มีการควบคุม JLabel ควบคุมว่า JPanel จะแสดงโดยตอบสนองต่อเหตุการณ์เมาส์หรือไม่ สิ่งนี้จะบรรลุผลของการพับหรือขยาย
ฉันจะไม่พูดมากขึ้นด้านล่างลองดูที่รหัสตัวอย่างโดยละเอียด
2. รหัส
ระดับสาธารณะ JshrinkablePanel ขยาย JPanel {ส่วนตัว jlabellabel; Private StringTitle = ""; Private JPanelContentPanel = NULL; บูลีนส่วนตัว isExpanded = true; jlistlist ส่วนตัว = new Jlist (); contentPanel) {super (); this.title = title; this.contentPanel = contentPanel; initcomponents (); initcomponentsstatus (); initlayout (); initresources (); UnregisterEvents (); registerEvents (); initcomponentsstatus () {this.label.sethorizontalalignment (jlabel.left); this.label.setverticalalignment (jlabel.center); this.label.setverticalTextPosition (jlabel.center); imageicon ("src/resources/expand.png"); this.iconcollapse = ใหม่ imageicon ("src/resources/clolaps.png");} โมฆะส่วนตัว initlayout () {this.setlayout (ใหม่ gridbaglayout (); gridbagconstraints.west, gridbagconstraints.horizontal, สิ่งที่ใส่เข้าไปใหม่ (0,0,0,0), 0,0)); this.add (นี่. contentpanel, ใหม่ gridbagconstraints (0,1,1,1,1,1,0, gridbagconstraints. สิ่งที่ใส่เข้าไป (0,0,0,0), 0,0));} ช่องว่างส่วนตัวเริ่มต้น () {this.label.seticon (this.iconexpand); this.label.settext (this.title); {this.label.addmouselistener (this.mouselistener);} ส่วนตัว mouselistenermouselistener = mouseadapter ใหม่ () {@Overridepublic โมฆะ mouseclicked (MouseEvent E) {label.setOpaque (true); label.repaint ();}@overridepublic void mouseexited (MouseEvent E) {label.setOpaque (เท็จ); label.repaint ();}}; void panelvisible ? this.iconexpand: this.iconcollapse);} โมฆะคงที่สาธารณะ (สตริง [] args) {jframe jf = jframe ใหม่ ("JshrinkablePanel"); jf.setbounds (400,200,400,300); jpanel (); panel.add (ใหม่ jbutton ("เพียงเพื่อการแสดง")); panel.setBorder (borderFactory.createTitledBorder ("border")); jshrinkablePanel scrollpane = new jshrinkablePanel ("testjshrinkablepanel"3. ผล
แผงขยายเมาส์บนฉลากชื่อ
แผงขยายเมาส์ไม่ได้อยู่ในฉลากชื่อ
แผงพับเมาส์บนฉลากชื่อ
เมาส์พับแผงไม่ได้อยู่ในฉลากชื่อ
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com