问题描述
我试图将程序转换为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
一起使用。
因此您可以:
- 创建一个
ArrayList
。 - 使用
DefaultListModel
的{{1}}方法将addAll(...)
的项目复制到模型中。 - 使用
DefaultListModel
的{{1}}方法。
更好的方法是不创建两个ArrayList来保存初始数据。相反,只需创建一个ArrayList
并将数据直接添加到模型中即可。这样,数据就只能放在一个地方。要更改setModel(...)
中显示的数据,您只需使用JList
方法。