Я пишу программу, которая имеет две основные фазы: определение области интереса, а затем распознавание объектов в этом регионе. В моем интерфейсе есть один JProgressBar, и я хочу, чтобы он указывал, на какой стадии он работает. Я заметил, что при простом «линейном» подходе отображается только второе сообщение. Итак, после https://stackoverflow.com/a/277048, я использую Runnables и SwingUtilities.invokeLater для установки строки моего индикатора выполнения.setString JProgressBar более одного раза
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, но безрезультатно. Итак, как мне это сделать?