私が作成しているプログラムでは、オブザーバー パターンを使用しましたが、実際のコードはデバイスに接続され、データを測定するため、ここではループでシミュレートされています。メソッドは正常に実行されますが、swing は実行されません。
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
}
どんな助けでも大歓迎です!(これはスレッド化の問題になると感じていますが、よくわかりません。そうであれば、swingでそれを行う方法はまだわかりません)