对于我创建的程序,我使用了观察者模式,但虽然我的Observable几乎不断地发送数据,但是在这里模拟了一个循环,因为实际代码连接到设备并测量数据,我的更新();方法运行它应该但摆动不。Java Swing GUI冻结 - 观察者模式
Swing只会在循环完成后更新JTextField,但是当我使用System.out.println()时,它会很好地迭代每次更新。
可观察代码:
public void collectData()
{
for(int i = 0; i < 10; i++)
{
currRandom = (Math.random() * 10);
for(Observer o : observers)
{
notify(o);
}
}
}
观察员(SWING)代码:
public void update()
{
jRecievedData.setText(jRecievedData.getText() + "\n" + Double.toString(PVC.pc.getCurr()));
jlAverage.setText("Average: " + PVC.getAverage());
jlMin.setText("Minimum: " + PVC.getMin());
jlMax.setText("Maximum: "+ PVC.getMax());
// setText updates slow
}
任何帮助将不胜感激! (我有感觉这是一个线程问题,但我不确定,如果是这样,我仍然不知道如何做到这一点)
我假设通知调用update()方法。由于update()方法更改文本字段的内容,因此请确保在EDT(Event Dispatch Thread)中调用它。 – avis
它运行在美国东部时间,没有成功=( –