У меня странная проблема. Я поставил JProgressBar:ProgressBar не меняет свое значение в Java
private JProgressBar progressBar;
public void foo()
{
...
progressBar = new JProgressBar(0, 100);
progressBar.setValue(0);
progressBar.setStringPainted(true);
...
contentPane.add(progressBar);
...
}
Но она меняется только тогда, когда я ставлю SetValue функцию его в некоторых местах в коде, не везде:
public void foo2()
{
progressBar.setValue(100); //working
if(...)
{
System.out.println("These instructions are executing"); //working
progressBar.setValue(0); //not working
}
}
Итак, что я делаю неправильно? Почему вторая инструкция не работает?
После рассмотрения [Как использовать баги прогресса] (http://download.oracle.com/javase/tutorial/uiswing/components/progress.html), разместите [sscce] (http://sscce.org) что демонстрирует проблему. – trashgod
Возможно ли, что foo2() не вызывается из потока gui, то есть не вызывается из какого-либо компонента-слушателя и вместо этого вызывается из основного потока? Если это так, то причина. Изменения в gui должны произойти в потоке gui. См. SwingUtilities.invokeLater – MeBigFatGuy