【问题标题】:How to create several Jlists with different values with DefaultListModel如何使用 DefaultListModel 创建多个具有不同值的 Jlist
【发布时间】:2016-09-23 15:07:34
【问题描述】:

我的代码有问题。 我有一个多维字符串数组 [] [] 并想从中创建列表。 所以对于每个 array[] 元素,我想要一个包含它的值的新列表。例如,我有 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;
}

但现在我不得不从仅 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.......
                          }
                     }
            });
            }
        }

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

【问题讨论】:

  • 我看到你在我发布答案后编辑了你的帖子,但我的答案仍然有效。 new DefaultListModel&lt;String&gt;(); 在循环之外,因此您在所有 JList 对象之间共享模型的单个实例。

标签: java arrays jlist defaultlistmodel


【解决方案1】:

之前您在每次循环中都创建了一个new JList。在您的新代码中,您不会在每次通过循环时创建 new 模型,因此您每次都只是在现有模型中添加更多内容。

【讨论】:

  • 有时很容易忽略这样的事情。很高兴我能帮忙:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
  • 2022-06-28
  • 2021-04-23
  • 2013-04-26
  • 1970-01-01
相关资源
最近更新 更多