Java 使用自定义Arraylist更新JList

Java 使用自定义Arraylist更新JList,java,swing,arraylist,jlist,Java,Swing,Arraylist,Jlist,我已尝试将我的程序转换为GUI。我有两个自定义数组列表,类型为subject(b&m),当按下b按钮时,我需要将ListData设置为自定义对象类型b,当按下m按钮时,我需要将ListData设置为自定义对象类型m。到目前为止,我的清单看起来像 LabelCoreSubs.setText("Core Subjects:"); ListCoreSub.setModel(new AbstractListModel<String>() {

我已尝试将我的程序转换为GUI。我有两个自定义数组列表,类型为subject(b&m),当按下b按钮时,我需要将ListData设置为自定义对象类型b,当按下m按钮时,我需要将ListData设置为自定义对象类型m。到目前为止,我的清单看起来像

LabelCoreSubs.setText("Core Subjects:");
        ListCoreSub.setModel(new AbstractListModel<String>() {
            String[] strings = {};

            public int getSize() {
                return strings.length;
            }

            public String getElementAt(int i) {
                return strings[i];
            }
        });
        jScrollPane1.setViewportView(ListCoreSub);
LabelCoreSubs.setText(“核心主题:”); setModel(新的AbstractListModel(){ 字符串[]字符串={}; 公共int getSize(){ 返回字符串长度; } 公共字符串getElementAt(int i){ 返回字符串[i]; } }); jScrollPane1.setViewportView(ListCoreSub); 我可以通过arraylist b=b.getCores()调用这个自定义arraylist;如何使此arraylist显示在我的Jlist中。我还尝试将JList类型更改为Subject,但没有成功

如何更新我的JList以在按钮单击事件上显示每个列表。

JList的
setListData()
方法只适用于数组或向量,因此不能将其用于
ArrayList

因此,您可以:

  • 创建一个
    DefaultListModel
  • 使用
    DefaultListModel
    addAll(…)
    方法将
    ArrayList
    中的项复制到模型中
  • 使用
    JList的
    setModel(…)
    方法
  • 更好的方法是不创建两个ArrayList来保存初始数据。相反,只需创建一个
    DefaultListModel
    ,并将数据直接添加到模型中。这样,数据就只在一个地方。要更改
    JList
    中显示的数据,只需使用
    setModel(…)
    方法。
    JList
    setListData()
    方法只适用于数组或向量,因此不能与
    ArrayList
    一起使用

    因此,您可以:

  • 创建一个
    DefaultListModel
  • 使用
    DefaultListModel
    addAll(…)
    方法将
    ArrayList
    中的项复制到模型中
  • 使用
    JList的
    setModel(…)
    方法

  • 更好的方法是不创建两个ArrayList来保存初始数据。相反,只需创建一个
    DefaultListModel
    ,并将数据直接添加到模型中。这样,数据就只在一个地方。要更改
    JList
    中显示的数据,只需使用
    setModel(…)
    方法。

    是否可以传递b.toArray(),然后更新JList?或者对(JListValues:array)模型使用DefaultListModel=new DefaultListModel()@第一种方法是创建一个固定的模型。也就是说,一旦创建模型,您将无法动态更新模型。2) 为什么要重新发明轮子?已经有一个方法可以在一个语句中为您实现这一点。为什么要编写自己的循环?使用符合您要求的任何方法。是否可以传递b.toArray()然后更新Jlist?或者使用DefaultListModel=new DefaultListModel()作为(JListValues val:array)模型。addElement(val)@第一种方法是创建一个固定的模型。也就是说,一旦创建模型,您将无法动态更新模型。2) 为什么要重新发明轮子?已经有一个方法可以在一个语句中为您实现这一点。为什么要编写自己的循环?使用任何符合您需求的方法。