1. Prinsip
Prinsipnya sangat sederhana: itu hanya jlabel dan jpanel. Jlabel menampilkan teks judul dan gambar yang menunjukkan apakah kontrol saat ini dalam keadaan diperluas atau runtuh; Sementara Jpanel terutama memiliki satu fungsi - wadah yang membawa kontrol. Jlabel mengontrol apakah JPanel ditampilkan dengan menanggapi acara mouse. Ini akan mencapai efek lipat atau berkembang.
Saya tidak akan banyak bicara di bawah ini, mari kita lihat kode sampel terperinci
2. Kode
Kelas Publik JshrinkablePanel memperluas jpanel {private jlabelabel; private stringtitle = ""; private jpanelcontentpanel = null; private boolean isExpanded = true; private jlistlist = new jlist (); ikonik private iconicOnxpand = null private, jlistlist = nullrist = nullrist (nullrist (); nulkankonxpand = null private iconiconcollapse = nullrist (null (null (); nulkankan = null private iconiconcollaps = null (null (); nulkankan = null private iconiconcollaps = null (null null (null null (null (null (null (null (null (null (nol contentPanel) {super();this.title = title;this.contentPanel = contentPanel;initComponents();initComponentsStatus();initLayout();initResources();unRegisterEvents();registerEvents();}private void initComponents() {this.label =new JLabel();}private void initComponentSstatus () {this.label.sethorizontalAntignment (jlabel.left); this.label.setVerticalAlignign (jlabel.center); this.label.setVerticaltextposition (jlabel.center); this.label.setBackroundground ImageIcon ("SRC/Resources/Expand.png"); this.iconcollaps = gambar baru ("SRC/Sumber Daya/Collapse.png");} void initlayout () {this.setlayout (gridbaglayout () (ini, 1, 1,1,1,. Gridbagconstraints.west, gridbagconstraints.horizontal, inset baru (0,0,0,0), 0,0)); this.add (this.contentpanel, gridbagconstraints baru (0,1,1,1,1, gridbagconstraints.west, gridbagconstors. 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.remoVemousenererenererenerenerenerenerenererenererenererenererenerenererenererenererenererenerererenererenererenererenererenererenerenerenererenerenerenerenerenerenerenerenerenerenerenerenerenerer {this.label.addmouseListener (this.mouseListener);} private mouseListenermouseListener = mouseadapter baru () {@Overridepublic void mouseClicked (mouseEvent e) {isExpanded =! isExpanded; Panelvisible ();}@isExpanded =! isExpanded; Panelvisible ();}@ISExpanded =! {label.setOpaque(true);label.repaint();}@Overridepublic void mouseExited(MouseEvent e) {label.setOpaque(false);label.repaint();}};private void panelVisible() {this.contentPanel.setVisible(this.isExpanded);this.label.setIcon(this.isExpanded ? This.iconexpand: this.iconcollapse);} public static void main (string [] args) {jFrame jf = new jframe ("jshrinkablePanel"); jf.setbounds (400.200.400.300); jf.setdefaultCcloseOperasi (jfroult.pane); jfankloseCclosePeration (jfrance.oseKe); jf.setDefaultCcloseOperasi (jfranchame. Jpanel (); panel.add (jbutton baru ("Just for show")); Panel.setBorder (borderfactory.createTitledborder ("border")); jshrinkablePanel scrollpane = baru JshrinkablePanel ("testjshrinkablePanel", panel); jf.add (scrollpane); jf.setVisible (true);}}3. Efek
Panel memperluas mouse pada label judul
Panel memperluas mouse bukan pada label judul
Panel Fold Mouse pada label judul
Mouse lipat panel tidak ada di label judul
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.