Jlist不从方法调用更新

时间:2016-05-13 20:58:44

标签: java jlist defaultlistmodel

我遇到了从我的主要单独更新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的文本。有什么建议吗?

0 个答案:

没有答案