1. Principio
El principio es muy simple: es solo un jlabel y jpanel. JLabel muestra el texto y las imágenes del título que indican si el control está actualmente en un estado expandido o colapsado; Mientras que JPanel tiene principalmente una función: el contenedor que lleva el control. JLabel controla si el JPanel se muestra respondiendo a un evento del ratón. Esto logrará el efecto de plegar o expandir.
No diré mucho a continuación, echemos un vistazo al código de muestra detallado
2. Código
clase pública jshrinkablePanel extiende jpanel {private jlabellabel; private stringtitle = ""; private jpanelContentPanel = null; private boolean isexpandy = true; private jListList = new jlist (); private iconiconexpand = nulli iconiconcollapse = null; null jshrinkable contentPanel) {super (); this.title = title; this.contentPanel = contentPanel; initComponents (); initComponentSStatus (); initLayout (); initResources (); UnregistereVents (); registrados ();} private initComponents () {this.label = new Jlabel ();};}; initComponentsStatus () {this.label.sethorizontalAlignment (jlabel.left); this.label.setVerticalAlignment (jlabel.center); this.label.setVerticalTextPosition (jlabel.center); this.label.setbackground (this.list.getselectionBackground ());); ImageiCon ("src/recursos/expand.png"); this.iconcollapse = new imageCon ("src/recursos/colapso.png");} private void initLayout () {this.setLayout (new gridbagLayout ()); this.add (this.label, new GridbagConstrainssss (0,0,0,1,1,1,1,1,1,0, GridbagConstraints.West, GridbagConstraints.Horizontal, nuevas inserciones (0,0,0,0), 0,0)); this.Add (this.ContentPanel, New GridbagConstraints (0,1,1,1,1,0, GridbagConstraints.West, GridbagConstraints.horizonTal, New, new, newe Inserciones (0,0,0,0), 0,0));} private void initresources () {this.label.Seticon (this.iconexpand); this.label.settext (this.title);} private void noregisterSevents () {this.label.removemouseListener (this.MouseSister);} {this.label.addMouseListener (this.MouseListener);} private MouseListEnMeManElistener = new Mooneadapter () {@OverridePublic Void MouseClicked (MouseeVent E) {isExpanded =! IsExpanded; PanelVisible ();}@overDidePublic Void mouseEvent (MoUleeVentEvent E) {{Label.SetOpAque (true); etiqueta ? this.iconexpand: this.iconcollapse);} public static void main (string [] args) {jframe jf = new jframe ("jshrinkablePanel"); jf.setBounds (400,200,400,300); jf.SetFaultCloseoperation (jframe.exit_on_close); Jpanel de jpanel); Jpanel (); panel.Add (nuevo JButton ("Just For Show")); Panel.SetBorder (BorderFactory.CreateTeTledBorder ("Border")); JShrinkablePanel ScrollPane = new JShrinkablePanel ("TestJShrinkablePanel", panel); jf.add (scrollpane); jf.setvisible;3. Efecto
Panel expandir el mouse en la etiqueta del título
Panel expande el mouse no en la etiqueta del título
Panel Fold mouse en la etiqueta de título
El mouse plegable del panel no está en la etiqueta del título
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.