簡體   English   中英

Java Swing GUI凍結-觀察者模式

[英]Java Swing GUI freezes - observer pattern

對於我正在創建的程序,我使用的是觀察者模式,而我的Observable幾乎一直在發送數據,並在此處用循環進行仿真,因為實際的代碼已連接到設備並測量了數據,我的update(); 方法會按預期運行,但擺動不會。

循環結束后,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
}

任何幫助將不勝感激! (我感覺這將是一個線程問題,但是我不確定,如果是,我仍然不知道如何使用秋千來做)

相反,通過你的觀察循環明確的,我們Observable這樣做,如圖所示這里

this.setChanged();
this.notifyObservers();

另外,請確認您沒有阻塞事件分發線程 如果是這樣,請考慮使用SwingWorker ,它大大簡化了Swing線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM