使用自定义数组列表更新JList

问题描述

我试图将程序转换为GUI。我有2个主题类型为(b&m)的自定义Arraylists,当按B按钮时需要将ListData设置为自定义对象类型b,而按M按钮时则需要将m设置为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);

我可以通过ArrayList调用自定义arraylist。b = B.getCores();我将如何获得此arraylist显示在我的Jlist中。我也曾尝试将JList类型更改为Subject,但是没有运气。

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

解决方法

setListData()的{​​{1}}方法仅适用于数组或向量,因此不能与JList一起使用。

因此您可以:

  1. 创建一个ArrayList
  2. 使用DefaultListModel的{​​{1}}方法将addAll(...)的项目复制到模型中。
  3. 使用DefaultListModel的{​​{1}}方法。

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