我遇到了从我的主要单独更新GUI类中的组件的问题。我做了很多研究,我找到的所有解决方案都没有奏效。在GUI类中,我有一个JList,我希望在完成任务时从主运行程序中填充。我尝试过多种方式使用.setModel(),但没有一种方法可以使用
GUI类
public class statusGUI extends javax.swing.JFrame {
private DefaultListModel listModel;
private void initComponents() {
statusList = new javax.swing.JList<>();
statusList.setModel(listModel);
jScrollPane1.setViewportView(statusList);
/* Removed a lot of formatting code */
pack();
}
private javax.swing.JList<String> statusList;
public statusGUI() {
//statusList = new JList(listModel);
listModel = new DefaultListModel();
listModel.addElement("Hello");
initComponents();
listModel.addElement("Test");
statusList.setModel(listModel);
}
public void addUpdateToList(String updateMsg){
listModel.addElement(updateMsg);
System.out.print(listModel.size() + ",");
System.out.print(listModel.get(listModel.size()-1) + ",");
statusList.setModel(listModel);
//statusList.revalidate();
//this.revalidate();
//this.repaint();
}
}
MAIN Class
public static void main(String[] args){
statusGUI status = new statusGUI();
status.startGUI();
status.addUpdateToList("Stack");
status.addUpdateToList("Overflow");
}
因此在运行main之后,我的列表填充了“Hello”和“Test”。但是这两个打印方法返回4,Hello,5,Overflow。因此,DefaultListModel listModel正在更新,但并不像我在线阅读它应该做的那样令人耳目一新。我还尝试添加一个带有ActionListener的按钮,该按钮执行statusList.setModel(listModel)但无济于事。这也发生在表单上的Label ...我无法在类之外更改Label的文本。有什么建议吗?