如何在 Java 中主动更新 JList

0 java swing

我正在处理一个项目,其中一个参数是表格或列表需要显示它从文本文件中读取的多个名称。我为此使用了 Swing 和 JList,但是我在实际使用新信息更新列表时遇到了很多麻烦。

public void selectTable(ArrayList<String> select) {
    DefaultListModel model = new DefaultListModel();
    model.addElement(select);
    selectList = new JList(model);
    selectList.setPreferredSize(new Dimension(690, 230));   
}
Run Code Online (Sandbox Code Playgroud)

我一直读到你应该使用默认列表模型来更新它,但每次我尝试在 GUI 方面没有任何变化时,JList 保持空白。通过调试器查看,我拥有的数组列表进入了添加元素方法,但没有任何变化

cam*_*ckr 5

编辑:

在 JDK 11 中,您可以创建一个DefaultListModel,然后ArrayList使用 的addAll(...)方法将其添加到模型中DefaultListModel

    ArrayList<String> items = new ArrayList<>();
    items.add("one");
    items.add("two");

    DefaultListModel<String> model = new DefaultListModel<>();
    model.addAll( items );

    JList<String> list = new JList<>(model);
Run Code Online (Sandbox Code Playgroud)

原始答案(当我使用 JDK8 时):

您不能ArrayListDefaultListModel.

您需要将 的每个项目分别添加ArrayListDefaultListModel

因此,您需要使用 方法遍历ArrayList并将 中的每个项目添加ArrayList到模型中addElement(...)

此外,您不会在代码中显示JList将 a添加到 aJScrollPane然后添加JScrollPane到框架的位置。