摇摆。用 JList 填充 JScrollPane

Swing. Fill JScrollPane with JList

我正在做一个 window 应用程序。我需要创建一个 JScrollPane,然后用 String[] 填充它。问题是我需要刷新它。

我想要一个空的 JScrollPane,当我启动应用程序时,当我按下任何按钮时,该按钮将刷新 JScrollPane。

代码我都有,只需要刷新一下内容:

    // Empty JScrollPane
    scrollPaneDic = new JScrollPane(new JList());
    scrollPaneDic.setBounds(225, 75, 200, 170);

    // Layout
    frame.getContentPane().setLayout(null);
    frame.getContentPane().add(lblPalabrasDiccionario);
    frame.getContentPane().add(scrollPaneDic);

在按钮 actionListener 中,我必须刷新内容:

    String[] newContent = (method generate and return the new array);
    listDic = new JList(newContent);
    scrollPaneDic = new JScrollPane(listDic);

重要:scrollPaneDic 和 listDic 是全局的

谢谢

改变变量的值不会以任何方式影响组件的状态;你必须调用一个组件方法。在您这样做之前,您的框架无法知道您创建了一个新的 JScrollPane。

实际上,您不应该创建新的 JScrollPane 或新的 JList。相反,您应该更新现有的 JList:

JList listDic = (JList) scrollPaneDic.getViewport().getView();
listDic.setListData(newContent);

此外,强烈建议不要使用空布局,尤其是对于 JScrollPane。尝试调整 window 的大小,或者在 运行 应用程序之前尝试更改系统字体的大小,您会明白原因的。并非每个用户的系统都像您的系统。