Отображение пользовательской строки прогресса на JProgressBar - PullRequest
2 голосов
/ 14 февраля 2012

Когда используется setStringPainted() из JProgressBar, величина завершения процесса отображается в процентах.

Но как я могу настроить setStringPainted(), чтобы вместо этого я мог отображать оставшееся время? в процентах?

Ответы [ 2 ]

4 голосов
/ 14 февраля 2012

setString() устанавливает строку прогресса.Если это свойство null, то отображается только простой процент.Это четко указано в документации:

setString

public void setString(String s)

Устанавливает значение строки прогресса.По умолчанию эта строка null, что подразумевает встроенное поведение использования простой строки процентов.Если вы указали пользовательскую строку прогресса и хотите вернуться к встроенному поведению, установите для строки значение null.

Строка прогресса отображается только в том случае, если метод isStringPainted возвращает значение true.

Параметры:

s - значение строки прогресса

3 голосов
/ 14 февраля 2012

Интересно (читай: я удивлен :-) вам придется самостоятельно реализовывать любую строку прогресса, зависящую от значения, переопределяя getString

    final JProgressBar bar = new JProgressBar() {

        @Override
        public String getString() {
            int max = getMaximum();
            return super.getString() + (max - getValue());
        }

    };
    bar.setStringPainted(true);
    ActionListener l = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            bar.setValue(bar.getValue() + 1);
        }
    };
    bar.setString("missing: ");
    new Timer(500, l).start();
...