ClassA
static JProgressBar progressBar;
ClassB
ClassA.progressBar.setValue(0);
...
ClassA.progressBar.setValue(10);
...
ClassA.progressBar.setValue(20);
Прогресс бар показывает 0, то 10 на верхней части 0, то 20 на верхней части 10.
Код:
public class ClassA
{
static JProgressBar progressBar;
public ClassA()
{
...
progressBar = new JProgressBar(0, 100);
progressBar.setStringPainted(true);
...
}
public static void main(String[] args)
{
ClassA cA = new ClassA();
cA.something();
}
public void something()
{
...
panel.add(progressBar, BorderLayout.CENTER);
...
}
...
}
public class ClassB
{
public void something()
{
...
ClassA.progressBar.setValue(0);
ClassA.progressBar.update(ClassA.progressBar.getGraphics());
...
}
...
}
Я также добавляя индикатор прогресса на панели. Как было указано выше, на нем отображается индикатор выполнения и процент, но он показывает каждое значение поверх другого.
EDIT: Проблема очень похожа на это: Java Swing revalidate() vs repaint(). Однако вместо
старое содержание по-прежнему на самом деле видно (хотя затемняется новым содержанием )
быть проблема с JPanel, шахта проблема с JProgressBar. Я пробовал ClassA.progressBar.revalidate();
и ClassA.progressBar.repaint();
, но ничего не работает, кроме ClassA.progressBar.update(ClassA.progressBar.getGraphics());
, который, как уже упоминалось выше, отображает новые значения поверх старых значений.
Помогите опубликовать небольшой контекст, немного больше кода и немного больше объяснений? Кроме того, почему статическая переменная? –
Вы получите лучшие ответы, если вы предоставите [SSCCE] (http://sscce.org/) – MadProgrammer
@Hovercraft Full Of Eels, статическую переменную, потому что я устанавливаю значение без создания объекта. – Arthur