2010-10-28 42 views
0

我不是一個java開發人員,但我需要編寫一個小程序來通過ftp 上傳文件(實際上,我是一個web開發人員)。一切工作正常,除了反饋消息的顯示方式。讓我用一個例子解釋:是否緩衝了jtextarea.settext()方法?

如果我寫sometingh這樣,方法(通過點擊事件控制)

//.... 
myJpanel.setText("Connecting to remote server"); 

//actually, it's surrounded by try-catch statement 
myFtpObject.connect(); //this is taken from a third part package 
myJpanel.setText("Connected") 

裏面當我嘗試運行這段代碼的連接設置(即連接後我上傳文件沒有問題),但在Jpanel裏面,我在immeditaly上讀取「connected」(altought需要幾秒鐘才能連接),我從來沒有看到「Connecting to remote server」字符串。

這聽起來像Jpanel setText方法緩存在某種方式。
如何實時顯示消息?

(我試着測試做的System.out.println和它的工作太棒了!)
感謝

回答

1

如果我寫sometingh這樣的方法(通過點擊事件控制)內

在事件偵聽器中執行的代碼在EDT上執行。問題在於長期運行的任務阻止了Swing EDT。所以GUI從來沒有機會重新繪製自己。

閱讀Swing教程中有關Concurrency的部分以獲取更多信息和解決方案。基本的解決方案是爲長時間運行的任務創建一個單獨的線程。

這也是爲什麼System.out.println(..)有效,因爲它在不同的線程上執行。