for (do something in) {
TextArea.append("Text here");
//break for one second
}
我的問題是我該如何中斷一秒鐘,並直接顯示在textarea上,而不是在同一時間?Java TextArea更新
for (do something in) {
TextArea.append("Text here");
//break for one second
}
我的問題是我該如何中斷一秒鐘,並直接顯示在textarea上,而不是在同一時間?Java TextArea更新
暫停執行一秒可以用
Thread.sleep(1000);
可以做到,但你應該通過捕捉可能InterruptedException
try
{
Thread.sleep(1000);
}
catch(InterruptedException e)
{
System.out.println(e.getMessage());
}
你也應該更改GUI組件
EventQueue.invokeLater(new Runnable(){
public void run()
{
//make gui change here
}
});
這從AWT GUI事件調度線程(EDT)更新它。
對於突破僅一個第二,你必須使用睡眠(1000)Thread類,並實現多線程,你的方法必須重寫run方法和擴展Thread類
它可能如果可以一次顯示所有TextArea.append調用不在swing線程中發生。下面的塊請求擺動線程執行可運行的代碼,阻塞當前線程直到完成。然後,我們做我們的第一秒的睡眠
final JTextArea someArea = new JTextArea();
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
someArea.append("Some text");
}
});
} catch (InterruptedException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvocationTargetException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}
我知道,你可以使用,但隨後仍然顯示這一切在同一時間 – Pay4yourlife
然後我假設你有文字的'TextArea.append一大塊( 「文字在這裏」);'。在這種情況下,您需要手動將文本分解爲塊,並在每個循環中輸出一個塊。 –
修好了,謝謝! – Pay4yourlife