java - Swing 。用 JList 填充 JScrollPane

标签 java swing jframe jscrollpane jlist

我正在做一个窗口应用程序。我需要创建一个 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。尝试调整窗口大小,或者在运行应用程序之前尝试更改系统字体的大小,您就会明白原因。并非每个用户的系统都像您的系统。

关于java - Swing 。用 JList 填充 JScrollPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28002397/

相关文章:

java - 如何在 jar 文件中制作 Frame/Applet 应用程序?

java - 禁止 Java URL 获取本地文件?

javascript - 如何将我的 Ionic 应用程序与我的 java 服务器(Spring MVC)连接?

java - 当它们位于不同的类中时,如何从另一个JPanel事件监听器更改JPanel的组件?

java - JFrame嵌套布局线程错误中异常

java - 在 TextView 中使用 TypeWriter 动画

java - 通过单击 JButton 创建 JButton

java - 什么决定了 Java 中的组件可见性?

java - 无法调整大小的 JFrame 包错误

java - 带有提供信息的列表的 JFrame