动态添加元素到 JList

2023-08-11 1544阅读

学习Java的时候用过JList,不知道如何添加元素。Jlist 一种显示对象列表并允许用户选择一个或多个项目的组件。一个单独的模型 ListModel 维护列表的内容。这里注意,在容器中添加 Jlist 时可以选择使用 JScrollPane(提供轻量级组件的可滚动视图。JScrollPane 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口。这里只是举个例子:来说明JList对象不能直接添加到JPanel中,而必须先添加到JScrollPane中,然后再将JScrollPane对象添加到JPanel中。这里没有添加布局管理器的代码,读者可以按照这个思路自行添加。

学习Java的时候用过JList,不知道如何添加元素。 这是我的经验:

Jlist 一种显示对象列表并允许用户选择一个或多个项目的组件。 一个单独的模型 ListModel 维护列表的内容。

这里注意,在容器中添加 Jlist 时可以选择使用 JScrollPane(提供轻量级组件的可滚动视图。JScrollPane 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口。)

例如:

Panel jp = new JPanel();
JScrollPane jsp = new JScrollPane();
JList jl = new JList();
jsp.add(jl);
jp.add(jsp);

这里只是举个例子:来说明JList对象不能直接添加到JPanel中,而必须先添加到JScrollPane中,然后再将JScrollPane对象添加到JPanel中。 这里没有添加布局管理器的代码,读者可以按照这个思路自行添加。 (这只是我的经验,如果有更好的方法请补充)。

如何动态添加元素到JList:

动态添加元素到 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类来实现的。 先说一下这个类的继承关系。

列表模式(接口)

//例如:
   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

总之,JList并不关心元素的添加,而是通过DefaultListMode来管理,最终设置Jlist.setMode(DefaultListMode)完成元素的动态添加。

- - 超过

//补充一些文档内容
JList的setModel()方法:
public void setModel(ListModel<E> model)
    //设置表示列表的内容或“值”的模型,通知属性更改侦听器,然后清除列表的选择。 
    
JList是通过ListModel来管理数据的,DefaultListModel继承于ListModel
可先通过--DefaultListModel来管理,
然后通过list.setModel()
    
    private JList<String> list = new JList<String>();
   	private DefaultListModel<String> dlm = new DefaultListModel<String>();
	//在List第一行添加"hello"
	dlm.add("hello",0);
	//在末尾添加"world"
	dlm.addElement("world");
	//清空操作
	dlm.clear();
	....
    list.setModel(dlm);

//也可以这样理解:

DefaultListMedel:定义了一系列预操作动作,首先将这些动作封装在DefaultListModel对象中

然后JList通过setModel()接收这个“action”对象,并完成(添加、删除、检查)操作

还实现了JList的数据刷新

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]