我已經創造了NetBeans中JDialog
和一個自定義的構造函數如下:強制JDialog在處理數據之前變得可見?
public AnimatedProgress(java.awt.Frame parent, boolean modal, JTable table) {
super(parent, modal);
initComponents();
setLocationRelativeTo(parent);
progressLabel.setText("Collecting Table Data. . .");
Object[][] data = getJTableData(table); // Simple method to collect data and store in Object[][] array
progressLabel.setText("Processing Data. . .");
processData(data);
progressLabel.setText("Data Processed. . .");
}
現在我叫這個JDialog
爲:
new AnimatedProgress(this, true, dataTable).setVisible(True);
我的問題是,作爲Java調用構造函數,所有代碼在構造函數中首先被執行,然後出現對話框並顯示最終結果。
我該如何讓我的JDialog
先出現然後再處理方法:getTableData()
和processData()
?
不要阻塞EDT(Event Dispatch Thread) - 當發生這種情況時GUI將「凍結」。而不是調用 'Thread.sleep(n)'實現一個Swing'Timer'用於重複執行任務或者一個'SwingWorker'執行長時間運行的任務。 有關更多詳細信息,請參見[併發中的Swing](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)。 – 2012-04-07 10:26:31
@AndrewThompson - 是的這實際上是主要問題。那麼我知道'swing.Timer'好,但只有兩個過程肯定不會重複,而且我不知道如何在這裏應用'SwingWorker'。 。可以用'SwingWorker'代碼來回答這個問題嗎? – Asif 2012-04-07 10:33:31
@Asif:請不要要求代碼 - 這取決於你創建。爲什麼不看由Andrew Thompson關聯的教程,並嘗試創建自己的代碼。那麼如果你在這裏發佈你的嘗試。 – 2012-04-07 10:39:25