Java 如何使用DefaultListModel创建多个具有不同值的Jlists

Java 如何使用DefaultListModel创建多个具有不同值的Jlists,java,arrays,jlist,defaultlistmodel,Java,Arrays,Jlist,Defaultlistmodel,我的代码有问题。 我有一个多维字符串数组[],希望从中创建列表。 因此,对于每个数组[]元素,我需要一个包含其值的新列表。例如,我有4个列表。列表1有3个值,列表2有1个值,列表3有4个值,列表4有2个值。 当我刚刚使用JList时,它工作得很好。对于数组的每个值,我都有它的所有值: protected static JComponent getButtonCluster() { contentPanel.removeAll(); contentPanel.setLayo

我的代码有问题。 我有一个多维字符串数组[],希望从中创建列表。 因此,对于每个数组[]元素,我需要一个包含其值的新列表。例如,我有4个列表。列表1有3个值,列表2有1个值,列表3有4个值,列表4有2个值。 当我刚刚使用JList时,它工作得很好。对于数组的每个值,我都有它的所有值:

    protected static JComponent getButtonCluster() {
    contentPanel.removeAll();
    contentPanel.setLayout(new GridLayout(0,2, 5, 5));
    contentPanel.setBorder(new EmptyBorder(10,0,0,0));
    for (int i=0; i < StringArray.length; i++) {
        listbox = new JList( StringArray[i] );
        contentPanel.add(listbox);
    }
    return contentPanel;
}
受保护的静态JComponent getButtonCluster(){
contentPanel.removeAll();
setLayout(新的GridLayout(0,2,5,5));
contentPanel.setboorder(新的EmptyBorder(10,0,0,0));
对于(int i=0;i
但现在我不得不从仅JLists更改为DefaultListModel,因为我想通过单击值来更改值。 现在所有列表都有了数组的所有值。因此,所有4个框都有10个元素

        final DefaultListModel<String> model = new DefaultListModel<String>();          
        for (int i=0; i < StringArray.length; i++) {
        for (int j=0; j < StringArray[i].length; j++) {
            model.addElement(StringArray[i][j]);

            if((StringArray[i].length -1)== j) {
            listbox = new JList<String>(model);
            contentPanel.add(listbox);

            listbox.addMouseListener(new MouseAdapter() {
                     public void mouseClicked(MouseEvent e) {
                         if (e.getClickCount() == 2) {
                             //Value Change part.......
                          }
                     }
            });
            }
        }
final DefaultListModel=new DefaultListModel();
对于(int i=0;i

如何解决我的问题,使每个列表都有自己的值?

以前,您在循环的每个过程中都创建了一个
新JList
。在新代码中,您没有在循环的每个过程中创建一个
新的
模型,所以每次都只是在现有模型中添加更多的值。

以前,您是在创建
new JList
在每次循环中都会出现。在新代码中,每次循环都不会创建一个
new
模型,因此每次都会向现有模型添加更多内容。

我看到你在发布我的答案后编辑了帖子,但我的答案仍然有效。
new DefaultListModel();
在循环之外,因此您在所有JList对象之间共享模型的单个实例。我看到您在发布我的答案后编辑了帖子,但我的答案仍然有效。
新的DefaultListModel();
在循环之外,因此您在所有JList对象之间共享模型的一个实例。有时很容易忽略这样的事情。很高兴我能帮忙:)有时很容易忽略这样的事情。很高兴我能帮忙:)