我在三个单独的滚动窗格中有三个列表。当我从第一个到第三个选择项目时,代码应该用向量动态填充列表。
从理论上讲,如果我从列表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();
}
}
}
一切正常,直到我尝试从list1,list2和list 3中选择另一个项目。
OneListener被解雇了。
List2更新很好但列表3保持不变,不会空白/清除列表。
一旦触发了TwoListener,list3就会相应地更新。
此外,控制台抛出以下内容
线程“AWT-EventQueue-0”中的异常java.lang.ArrayIndexOutOfBoundsException:-1
这不是交易破坏者,因为程序仍在运行。我想解决这个问题,以便实现可以延长并继续使用。
答案 0 :(得分:0)
编辑DefaultListModels而不是包含列表的向量是可行的方法。还有,小费。当您选择某些内容时“清空”列表时会抛出一个数组超出范围的异常。将默认列表选择设为0来对待它。