1. Principe
Le principe est très simple: c'est juste un jlabel et un jpanel. JLabel affiche le texte du titre et les images indiquant si le contrôle est actuellement dans un état élargi ou effondré; Alors que JPanel a principalement une fonction - le conteneur qui porte le contrôle. JLabel contrôle si le jpanel est affiché en répondant à un événement de souris. Cela réalisera l'effet du pliage ou de l'expansion.
Je ne dirai pas beaucoup ci-dessous, jetons un coup d'œil à l'exemple de code détaillé
2. Code
classe publique jshrinkablepanel étend jpanel {private jLabellabel; private stringtitle = ""; private jpanelcontentpanel = null; private booléen isExpanded = true; private jlistList = new jlist (); private iconcononexpand = null; private iconicollapse = null; public jshRinkablepanl (string tit {super (); this.title = title; this.ContentPanel = contentPanel; initComponents (); initComponentsStatus (); initLayOut (); initResources (); ungisterEvents (); registrevents ();} private void InitComponents () {this.label = new JLabel ();} private vox {this.label.sethorizontalalignment (jLabel.left); this.label.setvertEticalAlignment (jLabel.Center); this.label.setverticalTextPosition (jlabel.center); this.label.setbackground (this.list.getselectionbackground ()); this.oluxpand = new 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, nouveaux encarts (0,0,0,0), 0,0)); this.add (this.contentpanel, new gridbagconstraints (0,1,1,1,1,0, gridbagconstrens.west, gridbagConstraints.horizontal, new Encarts (0,0,0,0), 0,0));} private void InitResources () {this.label.seTICon (this.iconexpand); this.label.settext (this.title);} private void ungisterevents () {this.label.remevementistener (this.mouseleListner);} privateRw voids () {this.Label.AddMouseListener (this.MouseListener);} private MouseListenerMouseListener = new MouseAdapter () {@OverridePublic void Mouseclicked (Mouseevent E) {iSExpanded =! IsExpanded; PanneeVisible ();} @ overdePublic Void sourisé (Mousévent e) {label.setOpaque (true); label.repaint ();} @ OverRidepublic void MouseExit (MouseEvent e) {label.setopaque (false); label.repaint ();}}; private void PannelVisible () {this.contentpanel.Setvisible (this.isexpanded); ? this.Iconexpand: this.IConCollapse);} public static void main (String [] args) {jframe jf = new JFrame ("jshrinkablepanel"); jf.setbounds (400,200,400,300); jf.setdefaultcloseOperation (jframe.exit_on_on_close); jpanel); jpanel = new. JPanel();panel.add(new JButton("Just for show"));panel.setBorder(BorderFactory.createTitledBorder("Border"));JShrinkablePanel scrollPane=new JShrinkablePanel("TestJShrinkablePanel",panel);jf.add(scrollPane);jf.setVisible(true);}}3. Effet
Panel élargir la souris sur l'étiquette de titre
Le panneau étend la souris non sur l'étiquette de titre
Panneau pliant la souris sur l'étiquette de titre
La souris pliante du panneau n'est pas sur l'étiquette de titre
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.