0

我在三个单独的滚动窗格中有三个列表。当我从第一个到第三个选择项目时,代码应该用向量动态填充列表。

从理论上讲,代码使得如果我从列表 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

这不是交易破坏者,因为该程序仍在运行。我想解决这个问题,以便实现在扩展和工作中幸存下来。

我尝试实现thisthis。他们没有工作。

4

1 回答 1

0

编辑 DefaultListModels 而不是包含列表的向量是要走的路。另外,一个小费。当您在选择某些内容时“清空”列表时会引发 Array 越界异常。将默认列表选择设置为 0 来处理它。

于 2013-04-16T21:18:19.690 回答