我在三个单独的滚动窗格中有三个列表。当我从第一个到第三个选择项目时,代码应该用向量动态填充列表。
从理论上讲,代码使得如果我从列表 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 更新得很好,但 List 3 保持不变,不会变成空白/清除列表。
一旦 TwoListener 被触发,list3 就会相应地更新。
此外,控制台会抛出以下内容
线程“AWT-EventQueue-0”中的异常 java.lang.ArrayIndexOutOfBoundsException:-1
这不是交易破坏者,因为该程序仍在运行。我想解决这个问题,以便实现在扩展和工作中幸存下来。