Как отобразить рабочий, но фиктивный индикатор выполнения в Java - PullRequest
0 голосов
/ 04 ноября 2010

Я хочу показать индикатор выполнения в моей Java-программе, но я не хочу, чтобы он действительно работал над реальной задачей, но я хочу, чтобы он просто показывал, что какой-то процесс завершается, и он должен выглядеть так, как будто какой-то процесс продолжается,Я попытался сделать это с помощью следующего кода, но он мне не помогает, поэтому, пожалуйста, если вы можете помочь ....

Код:

       try 
       {
           for(int i=0;i<=100;i++){
              prog.setValue(i); // this would set the progressbar
             Thread.sleep(300); // this should pause the program or the loop
           }
       }

       catch(Exception e){

       }

Ответы [ 3 ]

3 голосов
/ 04 ноября 2010

Предположим, что Swing ...

Перевести индикатор выполнения в режим неопределенности
Индикатор выполнения в режиме неопределенности отображает анимацию, указывающую, что работа выполняется

http://download.oracle.com/javase/tutorial/uiswing/components/progress.html#indeterminate

1 голос
/ 04 августа 2016
int progressCounter=0;

    new Thread(new Runnable() {
        public void run() {
            while (progressCounter <= 100) {
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        jProgressBar1.setValue(jProgressBar1.getValue()+1);
                        System.err.println("hello");
                    }
                });
                try { Thread.sleep(500); } catch (InterruptedException e) {}
            }
        }
    }).start();

Попробуйте, это точно сработает.В Java компоненты обновляются с использованием EDT, а invokeLater(Runnable) используется для вызова задачи, когда все другие задачи в блоке были завершены.

1 голос
/ 04 ноября 2010

Вот пример, показывающий индикатор выполнения в диапазоне от 0 до 100. Важно обновить индикатор выполнения в потоке диспетчеризации событий, используя SwingUtilities.invokeLater или SwingUtilities.invokeAndWait.

public static void main(String[] args){
        JFrame f = new JFrame();
        f.setLayout(new BorderLayout());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final JProgressBar bar = new JProgressBar(0,100);
        f.add(bar, BorderLayout.SOUTH);
        f.setSize(64, 64);
        f.pack();
        f.setVisible(true);

        for(int i = bar.getMinimum(); i <= bar.getMaximum(); i++){
            final int percent = i ;
            SwingUtilities.invokeLater(new Runnable(){
                @Override
                public void run() {
                    bar.setValue(percent);
                }
            });
            try {
                Thread.sleep(25);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...