我已經作出了形式,除其他事項外,顯示(使用jfreechart的)的曲線圖。該圖繪製了動態生成的數據。要生成我使用一個線程的數據,如下所示:問題響應於一個JButton運行的線程單擊
class Grapher extends JFrame implements Runnable{
....
public void run(){
Thread thisT = Thread.currentThread();
while(true){
try{
double a = getRand();
System.out.println(a);
Millisecond millisecond = new Millisecond();
if(a == 100){thisThread.stop();}
timeseries.add(millisecond, a);
Thread.sleep(100);
}catch(InterruptedException e){}
}
如果設置我的計劃是這樣,圖形顯示我的GUI內罰款,但會立即啓動。
Grapher graph = new Grapher();
MyForm testForm = new MyForm();
testForm.addGraph(graph);
testForm.pack();
testForm.setVisible(true);
graph.run();
如果我錯過了最後一行graph.run()
,這增加了JButton的事件監聽器,當我按一下按鈕,我可以看到線程運行,因爲我得到顯示控制檯上的數字。但是,圖表不會更新,整個表格會凍結。
我不知道爲什麼發生這種情況,但我想它與線程呢?
'延伸的JFrame實現Runnable`看起來像一個糟糕的設計。此外,`Thread.stop`已棄用。 `run`中的`currentThread`總是線程本身。雖然沒有回答你的問題。 – khachik 2010-12-22 17:35:06