JList更新UI

时间:2016-09-28 03:04:30

标签: java swing vector jlist

所以我一直在尝试使用DefaultListModel更新JList。现在我已经看过在线示例并且已经创建了更新模型的功能。我面临的问题是,即使在调用updateUI()方法之后,模型仍在更新,而不是UI。这是我的代码。

 public void updateAthleteList() {

 System.out.println("Trying to update");
 //call updateUI() for the JList object
 athletesModel.clear();
 System.out.println(athleteList.size());
 for(int i = 0; i < athleteList.size(); i++) {

     System.out.println("Inside loop");
     athletesModel.addElement(((Athlete) athleteList.get(i)).toStringCount());
 }

 athletesList.updateUI();
 System.out.println(athletesModel.size());
 System.out.println(athletesList.getModel().getSize());
}

输出线就在那里进行调试。如果能得到任何帮助,我将非常感激。提前谢谢。

更新

这次我使用过简单的字符串,模型正在更新,因为我打印了大小,但JList仍然没有变化。这是我的代码

public void updateAthleteList(Athlete newAthlete)
 {
    System.out.println("Trying to update");
    //call updateUI() for the JList object
    DefaultListModel tempModel = (DefaultListModel)athletesList.getModel();
    tempModel.addElement("hij");
    System.out.println(athletesList.getModel().getSize());
    athletesList.setModel(tempModel);
    athletesList.updateUI();
    System.out.println(athletesList.getModel().getSize());
 }

1 个答案:

答案 0 :(得分:0)

将模型JList设置在某处?也许在它的构造函数中

JList s = new JList();
DefaultListModel x =  (DefaultListModel) s.getModel(); //

或之后

//change athletesList.updateUI(); 
jList.setModel(athletesModel);