最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何實現(xiàn)可折疊Panel方法示例

 更新時間:2018年07月05日 16:49:26   作者:天香閣主  
這篇文章主要給大家介紹了關于利用Java如何實現(xiàn)可折疊Panel的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用java具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1.原理

原理非常簡單:就是一個JLabel和JPanel。Jlabel顯示標題文字以及標明控件當前是處于展開還是折疊狀態(tài)的圖片;而JPanel主要就一個作用——承載控件的容器。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();
initResources();
unRegisterEvents();
registerEvents();
}

private void initComponents() {
this.label =new JLabel();
}

private void initComponentsStatus() {
this.label.setHorizontalAlignment(JLabel.LEFT);
this.label.setVerticalAlignment(JLabel.CENTER);
this.label.setVerticalTextPosition(JLabel.CENTER);
this.label.setBackground(this.list.getSelectionBackground());
this.iconExpand =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,new Insets(0,0,0,0),0,0));

this.add(this.contentPanel,new GridBagConstraints(0,1,1,1,1,0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,new 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.removeMouseListener(this.mouseListener);
}

private void registerEvents() {
this.label.addMouseListener(this.mouseListener);
}

private MouseListenermouseListener =new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
isExpanded = !isExpanded;
panelVisible();
}

@Override
public void mouseEntered(MouseEvent e) {
label.setOpaque(true);
label.repaint();
}

@Override
public 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.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel=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.效果

panel展開鼠標在標題Label上

panel展開鼠標沒在標題Label上

panel折疊鼠標在標題Label上

panel折疊鼠標沒在標題Label上

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • JVM加載一個類的過程

    JVM加載一個類的過程

    本文主要介紹了JVM加載一個類的過程。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • springBoot集成redis(jedis)的實現(xiàn)示例

    springBoot集成redis(jedis)的實現(xiàn)示例

    Redis是我們Java開發(fā)中,使用頻次非常高的一個nosql數(shù)據(jù)庫,本文主要介紹了springBoot集成redis(jedis)的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Windows10 Java環(huán)境變量配置過程圖解

    Windows10 Java環(huán)境變量配置過程圖解

    這篇文章主要介紹了Windows10 Java環(huán)境變量配置過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Idea調(diào)用WebService的關鍵步驟和注意事項

    Idea調(diào)用WebService的關鍵步驟和注意事項

    這篇文章主要介紹了如何在Idea中調(diào)用WebService,包括理解WebService的基本概念、獲取WSDL文件、閱讀和理解WSDL文件、選擇對接測試工具或方式、發(fā)送請求和接收響應、處理響應結果以及錯誤處理,需要的朋友可以參考下
    2025-01-01
  • Java中Spring對事務的支持詳解

    Java中Spring對事務的支持詳解

    這篇文章主要介紹了Java中Spring對事務的支持詳解,Spring對事務的支持有兩種方式,一是自己編寫事務,精確控制事務的邊界,二是采用聲明事務的方式,使用AOP來完成,需要的朋友可以參考下
    2023-07-07
  • Springboot+Shiro+Jwt實現(xiàn)權限控制的項目實踐

    Springboot+Shiro+Jwt實現(xiàn)權限控制的項目實踐

    如今的互聯(lián)網(wǎng)已經(jīng)成為前后端分離的時代,所以本文在使用SpringBoot整合Shiro框架的時候會聯(lián)合JWT一起搭配使用,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java語言----三種循環(huán)語句的區(qū)別介紹

    Java語言----三種循環(huán)語句的區(qū)別介紹

    下面小編就為大家?guī)硪黄狫ava語言----三種循環(huán)語句的區(qū)別介紹。小編舉得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • Java系統(tǒng)中拆分同步和異步詳解

    Java系統(tǒng)中拆分同步和異步詳解

    這篇文章主要給大家介紹了關于Java系統(tǒng)中拆分同步和異步的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • Java聊天室之使用Socket實現(xiàn)傳遞對象

    Java聊天室之使用Socket實現(xiàn)傳遞對象

    這篇文章主要為大家詳細介紹了Java簡易聊天室之使用Socket實現(xiàn)傳遞對象功能,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以了解一下
    2022-10-10
  • Spring Data Redis對象緩存序列化問題解決

    Spring Data Redis對象緩存序列化問題解決

    相信在項目中,你一定是經(jīng)常使用Redis,在使用時,有沒有遇到同我一樣,對象緩存序列化問題的呢,本文主要介紹了Spring Data Redis對象緩存序列化問題解決,感興趣的可以了解一下
    2024-01-01

最新評論

黄龙县| 南昌市| 容城县| 焉耆| 长武县| 新建县| 南雄市| 寻甸| 柳林县| 阿勒泰市| 白朗县| 平南县| 宜君县| 临清市| 即墨市| 南和县| 惠东县| 九龙县| 江都市| 招远市| 日土县| 芮城县| 文水县| 泰安市| 河津市| 尚志市| 蕲春县| 潍坊市| 兴化市| 县级市| 牡丹江市| 宜宾县| 绥德县| 黎平县| 龙井市| 江西省| 安达市| 葫芦岛市| 霍山县| 富蕴县| 海宁市|