1。原則
原則は非常に単純です。それは単なるJlabelとJpanelです。 Jlabelは、コントロールが現在拡張されているか崩壊しているかを示すタイトルテキストと写真を表示します。 JPanelには主に1つの関数があります - コントロールを運ぶコンテナ。 JLabelは、JPanelがマウスイベントに応答することにより表示されるかどうかを制御します。これにより、折りたたみや拡大の効果が得られます。
以下ではあまり言いません。詳細なサンプルコードを見てみましょう
2。コード
public class JShrinkablePanel extends JPanel {private JLabellabel;private Stringtitle ="";private JPanelcontentPanel =null;private boolean isExpanded =true;private JListlist =new JList();private IconiconExpand =null;private IconiconCollapse =null;public JShrinkablePanel(String title, JPanel contentPanel){super(); this.title = title; this.contentpanel = contentPanel; initComponents(); initComponentsStatus(); initlayout(); unregisterevents(); regigevents(); regigentevents(); registerevents();} private void initcomponents(){label = firate void void void void void void initComponentsStatus(){this.label.sethorizontalAlignment(jlabel.left); this.label.setverticalAlignment(jlabel.center); this.label.setterticaltextposition(jlabel.center); 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,1,1,1,1,1: gridbagconstraints.west、gridbagconstraints.horizontal、新しい挿入図(0,0,0,0)、0,0)); this.add(this.contentpanel、new gridbagconstraints(0,1,1,1,1,0、gridbagconstraints.west、gridbagconstartssss.horizontal INSET(0,0,0,0)、0,0));} private void initresources(){this.label.seticon(this.iconexpand); this.label.settext(this.title);} private void un -registerevents(){this.label.label.removemouseRistener(this memprosener(this memptereneredere) {this.label.addmouseListener(this.mouselistener);} private museListenermouseListener = new Mouseadapter(){@OverridePublic void mouseClicked(mouseEvent e){isexpanded =!isexpand; wover voided; e){label.setopaque(true); label.repaint();}@overridepublic void mouseExited(mouseevent e){label.setopaque(false); label.repaint();}}; private void panedible()}} {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.setDefaultCloseoperation(jframe.exit_on_close); jpanelパネル= new jpanel(); panel.add(new jbutton( "Just for show "))3。効果
パネルタイトルラベルのマウスを展開します
パネルは、マウスをタイトルラベルに拡張します
タイトルラベルのパネルフォールドマウス
パネル折りたたみマウスはタイトルラベルにありません
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。