【问题标题】:JList update UIJList 更新界面
【发布时间】:2016-09-28 03:04:30
【问题描述】:

所以我一直在尝试使用 DefaultListModel 更新 JList。现在看了网上的例子,做了一个更新模型的功能。我面临的问题是模型正在更新,但 UI 没有更新,即使在调用 updateUI() 方法之后也是如此。这是我的代码。

 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());
 }

【问题讨论】:

  • 永远不需要调用 updateUI() 方法。您需要做的就是更新模型。如果 JList 没有更新,则意味着 1) 模型不属于显示在框架上的 JList 或 2) 您没有在事件调度线程上更新模型。问题出在您未发布的代码中。发布一个正确的SSCCE 来证明问题。也就是说,创建一个简单的 GUI,其中包含一个 JList 和一个带有操作侦听器的按钮,以将项目添加到模型中。证明简单的代码有效,然后修复你的真实程序。
  • 好的,我会尝试,但我在某处读到您不应该直接更新 Vector,而是更新模型。我正在做的是我从一个面板更新矢量,然后将其传递到我正在更新模型的另一个面板。会不会是个问题?
  • 是的,您需要更新模型。你还没有发布SSCCE,所以我无法提供更多建议。
  • 我通过直接更新模型而不是更新向量解决了这个问题。感谢您的帮助

标签: java swing vector jlist


【解决方案1】:

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

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

或在他的之后

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

【讨论】:

  • 抱歉没有运气。我确实在构造函数中设置了模型,我认为这不是问题。当我更新我的模型并调用函数 sportsList.getModel().getSize() 时,它会为我提供正确的模型大小,但不会更新 UI
  • 不需要使用 repaint()。当您更新模型时,JList 将自动重新绘制。
  • 我发现了问题。我正在调用该函数以从另一个类中更新 JList,而我每次都在该类中创建一个新对象。我现在更改了它,并且每次模型大小增加时都会创建一次对象,但我仍然看不到更新的 JList。我已经更新了代码,希望你能看一下@camickr
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-17
  • 2014-03-09
  • 2011-10-12
  • 2014-01-12
相关资源
最近更新 更多