zoukankan      html  css  js  c++  java
  • 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帮助文档。

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

  • 相关阅读:
    【MongoDB】NoSQL Manager for MongoDB 教程(基础篇)
    Pyhton爬虫实战
    Anacond的介绍
    centos7安装与配置nginx1.11,开机启动
    No module named flask 导包失败,Python3重新安装Flask模块
    centos上部署flask项目之环境配置-MySQL的安装
    Linux安装mysql5.6.33
    NODE升级到V12.X.X
    修改linux的mysql用户名和密码
    MySQL数据库
  • 原文地址:https://www.cnblogs.com/tianguook/p/2333992.html
Copyright © 2011-2022 走看看