我有一個JList列出了一個arrayList。當我按下名爲delete的按鈕時,我想從列表中刪除選定的元素(理想情況下爲數組列表)。目前我有下面的代碼,但它不工作。通過這個我的意思是,如果選擇了一個元素,它似乎什麼也不做,並且當沒有選中任何元素時,它給了我一個ArrayIndexOutOfBoundsException。從JList中刪除元素不起作用
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演示中得出的結論。
非常感謝!
你必須測試'if(listOrders。getSelectedIndex()> -1)'在刪除JList的元素的其餘代碼之前 – mKorbel
這可能(幾乎肯定)是非常糟糕的做法,但我設法提出了一個解決方案來解決我的問題:而不是執行listOrders.remove(index );''我使用了'arrayList.remove(index);'使用update方法,然後刷新列表,它有效地從列表中刪除了項目,在一個方法中刪除了列表列表。 – DanMc