【发布时间】:2020-03-14 15:32:44
【问题描述】:
所以在我的代码中,我有一个带有菜单栏的框架,可以让我添加面板。 一个面板有一些文本字段,我通过这些文本字段构建对象,将它们添加到 ArrayList,然后将它们显示在 JList 中。
我的问题是,当我按下构建对象的按钮时,面板没有刷新以立即显示 JList 的内容,我实际上必须从 MenuBar 中调用面板才能使其工作。
所以这是我构建 JList 的部分,如果 ArrayList 存在则填充它(这部分在 Panel 的构造函数中):
listModel = new DefaultListModel();
if (!MainInterface.listCat.isEmpty()) {
for (CategorieArticle c : MainInterface.listCat) {
listModel.addElement(c.toString());
}
}
list = new JList(listModel);
这是构建对象并将它们添加到 ArrayList 的按钮方法(这部分在 ActionListener 方法中):
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if (o == bEnr) {
if (tfNoCat.getText().isBlank() || tfNomCat.getText().isBlank()) {
} else {
MainInterface.listCat.add(new CategorieArticle(tfNomCat.getText()));
tfNoCat.setText("");
tfNomCat.setText("");
mainPanel.revalidate();
mainPanel.repaint();
}
}
}
问题是 .revalidate() 和 .repaint() 没有刷新面板,以便它通过第一段代码并填充 JList .
非常感谢任何帮助。
【问题讨论】:
-
stackoverflow.com/questions/4392722/… 希望对您有所帮助:)
-
您可以重新创建一个列表模型并调用 list.setModel()。
标签: java swing arraylist jlist