【发布时间】:2012-05-10 14:01:48
【问题描述】:
我有一个列出 arrayList 的 JList。当我按下名为 delete 的按钮时,我想从列表中删除选定的元素(最好是数组列表)。目前我有以下代码,但是它不起作用。我的意思是,如果选择了一个元素,它似乎什么都不做,当什么都没有选择时,它会给我一个 ArrayIndexOutOfBoundsException。
private JList listOrders = new JList(arrayList.toArray());
public void myList() {
listOrders.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION );
panelForLists.add(listOrders);
}
public void updateList() {
listOrders.setListData(arrayList.toArray());
listOrders.revalidate();
listOrders.repaint();
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == deleteItem) {
int index = listOrders.getSelectedIndex();
listOrders.remove(index);
updateList();
}
}
我认为这可能是因为我必须在某个地方添加 ListSelectionListener,但我不知道如何才能做到这一点。我在互联网上搜索了很长时间的答案,这就是我从 JList oracle 演示中得出的。
非常感谢!
【问题讨论】:
-
您必须在删除 JList 元素的其余代码之前测试
if(listOrders.getSelectedIndex() > -1) -
这可能(几乎肯定)是非常糟糕的做法,但我设法解决了我的问题:我没有使用
listOrders.remove(index);,而是使用arrayList.remove(index);使用更新方法然后刷新列表它在一种方法中有效地从列表和数组列表中删除了项目。
标签: java swing arraylist jlist