JList動態添加元素


學Java時用到了JList不知怎么添加元素,這里說說我的經驗:

  Jlist顯示對象列表並且允許用戶選擇一個或多個項的組件。單獨的模型 ListModel 維護列表的內容。

  這里要注意在把Jlist添加到容器時可以選擇用JScrollPane(提供輕量級組件的 scrollable 視圖。JScrollPane 管理視口、可選的垂直和水平滾動條以及可選的行和列標題視口。)

 例如:JPanel jp = new JPanel();

      JScrollPane jsp = new JScrollPane();

     JList jl = new JList();

      jsp.add(jl);

      jp.add(jsp);

   這里只是個例子:為了說明JList 對象不能直接添加到JPanel中,而是要添加到JScrollPane中,之后再把JScrollPane 對象添加到JPanel中。這里沒有加有關布局管理器的代碼,讀者可以根據這個思想自行添加。(這只是我的經驗,如有更好的方法還請補充)。

   再說說如何動態的添加元素到JList中:

  先舉例說明靜態的添加元素:

   String[] data = {"one", "two", "three", "four"};
    JList myList = new JList(data);
   

   Vector superClasses = new Vector();
    Class rootClass = javax.swing.JList.class;
    for(Class cls = rootClass; cls != null; cls = cls.getSuperclass()) {
        superClasses.addElement(cls);
    }
    JList myList = new JList(superClasses);

 

   ListModel model = myList.getModel();
    for(int i = 0; i < model.getSize(); i++) {
         System.out.println(model.getElementAt(i));
    }
    這三種都是jdk文檔里的例子,都是在創建JList的時候靜態的添加元素,添加后不能修改,刪除,增加。

   如果要動態的添加,以下是我的經驗:

   按我的理解,其實JList不管數據的添加,而是由DefaultListModel類實現數據的添加,先說說這個類的繼承關系。

   ListMode(接口)<----AbstractListMode類<------DefaultListModel類
    例如:

   DefaultListModel dlm = new DefaultListModel();

   dlm.addElement(element1);

    dlm.addElement(element2);

   .....

   JList jl = new JList();

   jl.setModel(dlm);

    這樣就把元素都添加進去了。

同理:要刪除全部信息

   dlm.clear();

   jl.setModel(dlm);

即可。

移除此列表中指定位置處的元素

則:

   dlm.remove(int index);

   jl.setModel(dlm);

 

總之,就是JList不管元素的添加,而是由DefaultListMode管,最后設置Jlist.setMode(DefaultListMode)就完成了元素的動態添加。想了解更多有關Jlist的知識請查詢Jdk幫助文檔。

 

 

以上都是我的一點經驗,歡迎大家討論糾錯。


免責聲明!

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



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