我正在編寫一個程序,它有兩個主要階段:確定感興趣區域,然後識別該區域中的對象。我的界面有一個JProgressBar,我希望它能指出它目前正在處理的階段。我注意到,採用簡單的「線性」方法,只顯示第二條消息。所以,遵循https://stackoverflow.com/a/277048,我使用Runnables和SwingUtilities.invokeLater來設置我的進度條字符串。JProgressBar的setString不止一次
private class MarkListener implements ActionListener {
public void actionPerformed(ActionEvent ae) {
mainFrame.getGlassPane().setCursor(new Cursor(Cursor.WAIT_CURSOR));
recognitionProgress.setStringPainted(true);
BlueMarkerTask bmt = new BlueMarkerTask();
bmt.addPropertyChangeListener(PrismRunnable.this);
SwingUtilities.invokeLater(new Runnable(){
public void run(){
recognitionProgress.setString("Marking ROI...");
}
});
bmt.execute();
RecognitionTask rt = new RecognitionTask();
rt.addPropertyChangeListener(PrismRunnable.this);
SwingUtilities.invokeLater(new Runnable(){
public void run(){
recognitionProgress.setString("Segmenting...");
}
});
rt.execute();
}
}
但是,這不起作用---只有「分段」保留在進度條的文本中。
我已經嘗試使用EventQueue而不是SwingUtilities,但無濟於事。那麼,我該如何解決這個問題呢?