0
我在三個單獨的滾動窗格中有三個列表。當我從第一個項目選擇項目到第三個項目時,代碼應該用向量動態填充列表。使用另一個列表的選擇清除JList監聽器不起作用
從理論上講,如果我從列表1中選擇一個項目,列表2將被填充,代碼就會生效。如果在列表2中選擇某項,列表3將被填充。
該代碼還應該可以從列表1中選擇另一個項目,填充列表2中的另一組項目並將列表3留空。
下面的代碼:
list1 = new JList(vector1);
list2 = new Jlist(vector2);
list3 = new Jlist(vector3);
s1 = new JScrollPane(list1);
s2 = new JScrollPane(list2);
s3 = new JScrollPane(list3);
list1.addListSelectionListener(new OneListener());
list2.addListSelectionListener(new TwoListener());
//add panes to gui and start gui. Listeners are inner classes.
public class OneListener implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent e)
{
if(!e.getValueIsAdjusting())
{
//getting a vector from another class called return_value
vector2 = return_value;
vector3.removeAllElements();
list2.setListData(vector2);
list3.setListData(vector3);
s2.repaint();
s3.repaint();
}
}
}
public class TwoListener implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent e)
{
if(!e.getValueIsAdjusting())
{
//geting a vector from another class named return_value
vector3 = return_value;
list3.setListData(vector3);
s3.repaint();
}
}
}
,直到我嘗試選擇列表1,列表2填充列表3的另一個項目這一切工作正常。
OneListener被解僱。
List2更新就好,但列表3保持不變,不會空白/清除列表。
只要觸發TwoListener,list3就會相應更新。
此外,控制檯拋出在螺紋下面
異常 「AWT-EventQueue的-0」 java.lang.ArrayIndexOutOfBoundsException:-1
這不是一個交易斷路器,如該程序仍在運行。我想解決這個問題,這樣實現就能夠繼續擴展並得到應用。
'vector2 = return;'不太可能會幫助,因爲'return'是一個保留關鍵字,此時將退出此方法... – MadProgrammer
數值名稱爲了清楚而改變。 –
由於您正在操作JList內容,因此應該使用DefaultListModels而不是Vectors。一個DefaultListModel用於每個JList。修改DefaultListModels的內容會在JLists中自動觸發更改。 –