JProgressBar отображает странную оранжевую волну

Я использую JProgressBar для отображения индикатора выполнения в моем кадре. Индикатор выполнения установлен в неопределенный режим, так как я не знаю, когда задача закончится. Вместо обычного индикатора выполнения отображается странная оранжевая волна.
1

Волна продолжает двигаться, когда задача выполняется. После его окончания значение устанавливается на 100 и отображается в виде оранжевых блоков (которые также движутся!). Я использую следующий код для отображения индикатора выполнения

Container content = this.getContentPane();
content.setLayout(null);    
prog = new JProgressBar(0, 100);
prog.setValue(0);
prog.setStringPainted(true);
Dimension preferredSize;
preferredSize=new Dimension();
preferredSize.width=300;
preferredSize.height=15;
prog.setPreferredSize(preferredSize);
content.add(prog);
Insets insets = content.getInsets();
Dimension size;
size = prog.getPreferredSize();
prog.setBounds(30+insets.left, 180+insets.top, size.width, size.height);

Как мне изменить его обратно на обычный индикатор выполнения?


person Rishabh    schedule 05.06.2013    source источник
comment
для лучшей помощи, скорее опубликуйте SSCCE, короткий, исполняемый, компилируемый, только о JFrame и JProgressBar, может быть важно, что LookandFeel используется   -  person mKorbel    schedule 05.06.2013
comment
Это выглядит как обычный индикатор выполнения для Nimbus Look-and-feel.   -  person Robin    schedule 05.06.2013
comment
должен ли он двигаться даже после того, как его значение установлено на 100   -  person Rishabh    schedule 05.06.2013


Ответы (1)


Я не углублялся в это, но это может быть баг Nimbus LaF.
В любом случае, для того, чтобы оранжевые блоки перестали двигаться (когда его значение равно 100), вам также, похоже, нужно вызвать :

prog.setIndeterminate(false);

Если вы хотите «автоматизировать» это, вы можете создать подкласс JProgressBar, например:

prog = new JProgressBar(0, 100) {
    public void setValue(int newValue) {
        super.setValue(newValue);
        if (newValue >= this.getMaximum()) {
            this.setIndeterminate(false);
        }
    }
};
prog.setValue(0);
...
person gkalpak    schedule 05.06.2013