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);
在另一堂课中。
myModel.addElement(aString);
问题仍然存在
问题是由于并发引起的,我没有适当地保护共享资源。
答案 0 :(得分:0)
在创建列表并使用模型对其进行初始化之后,您可以添加(并且很可能应该添加)元素:
jlist = new JList<String>(myModel);
scrollPane = new JScrollPane(jlist);
然后将模型传递给填充它的类:
myModel.addElement(aString);
此外,如果您要在非UI线程中更改模型,则可能会出现这样的问题。要检查是不是这样,请尝试在addElement
内调用invokeLater
:
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
myModel.addElement(aString);
}
});