我正在做一个窗口应用程序。我需要创建一个 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/