2013-07-23 1 views
0

У меня есть простой JDialog с индикатором прогресса, и я хочу, чтобы иметь JLabel, который идет как:Создание JDialog уже continuoulsly изменения текста Как «работает ...»

трудящегося. -> Рабочие .. -> Работы ...

примерно каждые .25 секунд.

Могу ли я просто запустить непрерывный цикл, повторно устанавливая текст JLabel?

Я знаю, что это должно быть простое решение, но я не могу найти его нигде!

Per @ Давид ответ ниже. Вот основная часть моего WorkingDialog (который расширяет JDialog) конструктор:

final JLabel lblWorking = new JLabel("Working."); 
    contentPanel.add(lblWorking, gbc_lblWorking); 

    SwingWorker<Void, Void> sw = new SwingWorker<Void, Void>() 
    { 

     @Override 
     protected Void doInBackground() throws Exception 
     { 
      while (!isCancelled()) 
      { 
       if (!lblWorking.getText().equals("Working...")) 
       { 
        lblWorking.setText("Working."); 
       } else 
       { 
        lblWorking.setText(lblWorking.getText() + "."); 
       } 
      } 

      return null; 
     } 
    }; 

    setVisible(true); 
    sw.run(); 

И когда я называю новый WorkingDialog() кадр приходит, но тот об этом. Кто-нибудь знает, почему?

Спасибо,

Rich

ответ

0

Создание демона, который будет обновлять вашу метку каждые 0,25 секунды. Не забывайте использовать SwingUtils.invokeLater() при обновлении метки.

Думаю, вы тоже сможете это сделать с SwingWorker.

Cheers

+0

Я читал много о SwingWorker. Как именно я использовал SwingWorker для решения этой проблемы? –

+0

Я также обновил свой вопрос –

+0

Я понял. Я закончил использование SwingWorker. Спасибо за рекомендацию. –