【问题标题】:Setting JList values with for loop使用 for 循环设置 JList 值
【发布时间】:2016-11-14 05:22:07
【问题描述】:

我有一个字符串数组,我想将其作为 JList 中的项目动态应用。数组中的项目会经常更改,因此 Jlist 模型也需要更改。这是我现在拥有的一个例子:

    listAvail = new JList();
    listAvail.setBorder(
            new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    listAvail.setModel(new AbstractListModel()
    {
        String[] values = new String[] { "Feature 1", "Feature 2", "Feature 3", "Feature 4",
                "Feature 5" };

        public int getSize()
        {
            return values.length;
        }

        public Object getElementAt(int index)
        {
            return values[index];
        }
    });
    scrollPane.setViewportView(listAvail);

我想用以下代码替换该代码:

    listAvail = new JList();
    listAvail.setBorder(
            new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    listAvail.setModel(new AbstractListModel()
    {

        String[] values = new String[5];

        for (int i = 0; i < 5; i++)
        {
            values[i] = "Feature" + i;
        }


        public int getSize()
        {
            return values.length;
        }

        public Object getElementAt(int index)
        {
            return values[index];
        }
    });
    scrollPane.setViewportView(listAvail);

我做错了什么?

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发帖 minimal reproducible exampleShort, Self Contained, Correct Example。 2) “我做错了什么?” 出了什么问题?假装我们没有坐在你的电脑前,也不是读心者。你期望会发生什么?究竟发生了什么?
  • 嗨,我建议你看看these tutorials(他们在学习这些 JThings 时确实帮了我很多忙。如果你不这样做,我可以进一步教你如何浏览它们'不知道怎么做)因为我认为您误解了 JList 的使用以及 ListModel 对他们来说是什么。

标签: java arrays swing


【解决方案1】:

不要创建自定义 ListModel。

您可以使用DefaultListModel。它具有add(...)remove(...) 等方法,可让您动态更新数据。

【讨论】:

  • 这就是我应该一直做的事情。非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 2015-03-29
  • 2017-03-17
  • 1970-01-01
相关资源
最近更新 更多