Swing之JList的使用


大家在使用Swing的JList的時候一定會關心幾個問題常見問題:

1:怎么把JList弄到界面上去

2:怎么往JList上放數據

3:怎么監聽JList里的項的雙擊事件,然后取出數據

4:數據太多,怎么添加滾動條。

這是幾個常用功能,今天在這里做個總結。

=========================================================================

1:怎么把JList弄到界面上去

2:怎么往JList上放數據

這兩個問題十分簡單,我們要把一個JList放在JPanel上,只要設置好JList的數據、大小,就可以直接用JPanel的add方法添加上去。

ListModel jListModel =  new DefaultComboBoxModel(new String[] { "張三", "李四" });  //數據模型
JList myJlist = new JList();
myJlist.setModel(jListModel);
myJlist.setPreferredSize(new java.awt.Dimension(192, 173));
myPanel.add(myJlist);        //直接add
 

這樣就可以顯示到myPanel上,注意數據模型接收的是Object類型數據。

效果圖:

什么時候你想更新數據,只需要調用JList.setModel(ListModel model)方法設置新的數據即可。

 

3:怎么監聽JList里的項的雙擊事件,然后取出數據

首先來看看如何監聽雙擊事件:

我們在查API的時候會發現沒有類似C#那種doubleClick事件,而單擊事件我們直接使用addListSelectionListener也可以,但是似乎這個監聽器沒法實現雙擊事件監聽。

那么我們要利用鼠標單擊事件做雙擊事件的判斷,而mouseClicked方法傳入的event正好有一個getClickConunt()方法。

getClickCount

public int getClickCount()
返回與此事件關聯的鼠標單擊次數。
返回:
單擊次數的整數值
                    myJlist.addMouseListener(new MouseAdapter() {
                        @Override
                        public void mouseClicked(MouseEvent e) {
                            if(e.getClickCount() == 2){
                                System.out.println("雙擊");
                            }
                        }
                    });

這樣就可以完成一次雙擊的判斷。

但是我們怎么拿出來我們雙擊的項的數據呢?這個mouseClicked事件作用域是整個JList。

大家知道事件監聽機制里有一個叫“事件源”的東西,這個東西就是觸發這個事件的源頭。而在這里源頭就是JList。我們可以獲得它,然后再獲得它的已選下標,再獲取數據。

                    myJlist.addMouseListener(new MouseAdapter() {
                        @Override
                        public void mouseClicked(MouseEvent e) {
                            if(e.getClickCount() == 2){
                                System.out.println("雙擊");
                                JList myList = (JList) e.getSource();
                                int index = myList.getSelectedIndex();    //已選項的下標
                                Object obj = myList.getModel().getElementAt(index);  //取出數據
                                System.out.println(obj.toString());
                            }
                        }
                    });

這樣就完成了一次雙擊取數據的動作。

 

4:數據太多,怎么添加滾動條。

這個也很簡單,把JPanel換成JScrollPane即可,但是這時候不再調用add方法,而是調用setViewportView方法

                    JScrollPane jScrollPane1 = new JScrollPane();    //滾動條panel
                    jScrollPane1.setPreferredSize(new java.awt.Dimension(218, 164));
                    ListModel jList1Model =  new DefaultComboBoxModel(new String[] { "張三","李四","李四","李四","李四","李四","李四","李四","李四","李四","李四" });
                    JList myJlist = new JList();
                    myJlist.setModel(jList1Model);            //設置數據
                    jScrollPane1.setViewportView(myJlist);    //不能直接add

這樣在數據超出顯示范圍時即可出現滾動條。

效果圖:

最后介紹個學習網站:Here


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM