Отображение пользовательской строки прогресса на JProgressBar

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

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


person svkvvenky    schedule 14.02.2012    source источник


Ответы (2)


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

setString

public void setString(String s)

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

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

Параметры:

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

person Joey    schedule 14.02.2012
comment
Случайное примечание: если вы нашли этот ответ полезным, вы можете проголосовать за него (треугольник, указывающий вверх слева от вопроса). Если это решило вашу проблему, вы можете принять это (зеленая галочка слева от вопроса). - person Joey; 14.02.2012
comment
это не помогает в требовании OP отображать оставшееся время вместо процента - setString приводит к возврату данного текста как есть, без какой-либо связи с текущим значением - person kleopatra; 14.02.2012
comment
Ну, оценка времени не была частью вопроса, когда я его читал. - person Joey; 14.02.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();
person kleopatra    schedule 14.02.2012