對於我創建的程序,我使用了觀察者模式,但雖然我的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
它運行在美國東部時間,沒有成功=( –