2010-02-26 48 views
0

我有一個Java程序,在該程序中啓動一個循環的項目列表,對數據進行一些計算以及各種其他任務。整個過程大約需要10分鐘,但是我想輸出列表中每個項目的結果,因爲該項目的處理已完成。輸出是一組寫入表中單元格的項目。 還有一個進度條,在整個動作完成之前不會更新。如何在動作運行時將輸出顯示到屏幕上? (Java)

儘管通過項目列表在循環中調用了輸出語句,但是所有輸出似乎都是排隊等待並且只在整個操作結束後才輸出。

我見過刷新其他語言的程序來解決這個問題。 Java是否允許這樣刷新?

在此先感謝您的幫助。

+0

你輸出什麼樣的表格?一個JTable?一個Excel文件?控制檯上的Ascii-Art? 「行動」是你正在使用的某個框架的抽象嗎?如果是這樣,哪一個?如果您想要特定的答案,請提出具體問題。 – meriton 2010-02-26 01:22:20

回答

3

是的,Java確實允許在長時間運行的進程正在進行時更新GUI。看看concurrency in SwingSwingWorker類的概念,以瞭解一些背景知識。

輸出是一組寫入表格單元格的項目。還有一個進度條,在整個動作完成之前不會更新。

你沒有更新你的小部件的原因是你最有可能在獨立的Swing繪畫線程中做長時間運行的過程。這將阻止您的GUI更新,直到該過程結束。

如需更準確的診斷,請張貼一些代碼。

0

嘗試System.out.flush();使用System.out.println();後寫一條消息。這將刷新流到屏幕。