我有Observable类,它在字符串更改时通知观察者。在观察者的更新方法中,可以将更新的字符串打印到控制台。但GUI没有相应更新。为什么呢?
public void update(Observable o, Object arg) {
String s=SwimmingCompetition.init().getScoreData().getResults();
System.out.println(s); //this works
jTextArea1.setText(s); //this not
}
答案 0 :(得分:3)
我敢打赌,你忽略了在Observer
上调用addObserver()
,或忽略了调用 setChanged()
和 {{ 1}}在你的Observable
中。显示了完整的示例here。
答案 1 :(得分:2)
我敢打赌你在GUI线程之外操纵GUI东西。试试这个:
public void update(Observable o, Object arg)
{
String s = SwimmingCompetition.init().getScoreData().getResults();
System.out.println(s);
SwingUtilities.invokeLater(() ->
{
jTextArea1.setText(s);
});
}
答案 2 :(得分:2)
请理解我们的困境。您已经发布了代码并声明它无法正常工作,但是尽管我们要求澄清,但截至目前为止,10小时后,还没有其他代码或说明。所以我们被卡住了。
我们所知道的是:
update(...)
。如果没有关于我们能做的所有事情的其他信息,那就猜测可能的原因包括:
s
不包含您认为应该保留的信息。再次根据我的评论,您没有使用更新的参数,并且可能无法在您需要的地方获取正确的信息。同样,请修正您的问题,以便我们可以回答它而不必做出疯狂的猜测。