jprogressbar в разгаре - PullRequest
       1

jprogressbar в разгаре

0 голосов
/ 17 декабря 2011

Привет. Я готовлю форму в java, где хочу показать индикатор выполнения со значениями от 1 до 5 с интервалом в 0,5 секунды, но в моем коде индикатор выполнения переходит прямо с 1 на 5 через 2,5 секунды. Пожалуйста, помогите мне с кодом ...

    public class cafee extends JFrame implements ActionListener {
JProgressBar pr1;
JButton b1;

public cafee() {
    setLayout(new FlowLayout());
    pr1 = new JProgressBar();
    pr1.setSize(10, 1);

    pr1.setForeground(Color.blue);
    pr1.setMinimum(0);
    pr1.setMaximum(5);
    pr1.setValue(0);
    pr1.setVisible(true);
    b1 = new JButton();
    b1.setVisible(true);

    add(pr1);
    add(b1);
    b1.addActionListener(this);
}

public void actionPerformed(ActionEvent ae) {
    if (ae.getSource() == b1) {
        for (int a = 1; a <= 5; a++) {

            try {
                                     pr1.setValue(a);
                Thread.sleep(500);
            } catch (Exception e) {
            }

        }
    }
}

public static void main(String[] args) {
    cafee caf = new cafee();
    caf.setVisible(true);
    caf.setSize(500, 500);
}

}

1 Ответ

1 голос
/ 17 декабря 2011

Если вы спите в потоке диспетчеризации событий (EDT), вы блокируете его, тем самым предотвращая все остальные методы обработки событий и рисования.JProgressBar полезно для отображения хода выполнения некоторой задачи в отдельном фоновом потоке.

Используйте SwingWorker.Его API-документ содержит простой для понимания пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...