私は、関心領域を決定することと、その領域内のオブジェクトを認識することの2つの主要なフェーズを持つプログラムを作成しています。私のインターフェースには単一のJProgressBarがあり、現在どのフェーズで作業しているかを示したいと思います。単純な「線形」アプローチでは、2番目のメッセージのみが表示されることに気付きました。したがって、https: //stackoverflow.com/a/277048に従って、RunnablesとSwingUtilities.invokeLaterを使用してプログレスバーの文字列を設定します。
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();
}
}
ただし、これは機能しません---プログレスバーのテキストには「セグメンテーション」のみが残ります。
SwingUtilitiesの代わりにEventQueueを使用してみましたが、役に立ちませんでした。だから、どうすればこれを行うことができますか?