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