gpt4 book ai didi

java JList不会刷新,在调试器中工作

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:26 25 4
gpt4 key购买 nike

JList Jlist;
JScrollPane scrollPane;
DefaultListModel<String> myModel = new DefaultListModel<>();

Jlist = new JList<String>();
scrollPane = new JScrollPane(Jlist);

我将 JList 和 myModel 发送到另一个类,它们在其中执行以下操作。

myModel.addElement(aString);
Jlist.setModel(myModel );

这会更新调试器中的 JList。当我实时运行它时,我在 GUI 中看不到 JList 的变化,但变量在调试器中。

编辑 #1 按照答案的建议进行了更改:

DefaultListModel<String> myModel = new DefaultListModel<>();
JList Jlist = new JList<String>(myModel );
JScrollPane scrollPane = new JScrollPane(Jlist);

在另一个类(class)。

myModel.addElement(aString);

遗憾的是问题仍然存在

问题是由于并发性造成的,我没有正确保护共享资源。

最佳答案

您可以(在您的情况下很可能应该)在创建列表并使用模型对其进行初始化后添加元素:

jlist = new JList<String>(myModel);
scrollPane = new JScrollPane(jlist);

然后只需将模型传递给填充它的类:

myModel.addElement(aString);

此外,如果您在非 UI 线程中更改模型,也可能会出现此类问题。要检查是否是这样,请尝试调用 invokeLater 内的 addElement:

javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
myModel.addElement(aString);
}
});

关于java JList不会刷新,在调试器中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54833634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com