我有一個GUI,它在它運行的平臺上構建/初始化時相當繁重。因此,我想在初始化時更新進度。如何在Swing加載時更新/繪製JProgressBar構建GUI
我有一個小的未裝飾的JDialog,它包含一個JLabel和一個JProgressBar,我想在初始化期間的特定位置進行更新,但是,因爲事件調度thead(按照Swing規則)用於構建/初始化GUI,所以進度是當然,不會更新,直到EDT再次空閒(即初始化完成)。
JProgressBar我已經得到使用「paintImmediately」重繪,但我似乎無法使其正常工作他JLabel和對話本身..是否有任何簡單的推薦/驗證方法來實現這一點?
歡呼聲......
編輯:添加的是什麼,我試圖做一個例子;當然大大簡化了。
private JLabel progressLabel;
private JProgressBar progressBar;
public static int main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
showProgressDialog();
progressLabel.setText("construct 1");
constructSomeHeavyGUI();
progressLabel.setText("construct 2");
progressBar.setValue(33);
constructSomeMoreHeavyGUI();
progressLabel.setText("construct 3");
progressBar.setValue(67);
constructEvenMoreHeavyGUI();
progressLabel.setText("done");
progressBar.setValue(100);
hideProgressDialog();
showHeavyGUI();
}
});
}
造成調用progressBar.setValue()
/progressLabel.setText()
上面當然會在重繪只要得到排隊的EDT正忙,導致重繪後,我們都在做,而不是沿途更新..
*「大大簡化了,當然」*要發佈大大簡化了答覆的代碼,請發佈[SSCCE](http://pscode.org/sscce.html)(當然)。 –