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帮助文档。

 

 

以上都是我的一点经验,欢迎大家讨论纠错。

你可能感兴趣的:(JList)