Перекрасить заголовок JFrame - PullRequest
0 голосов
/ 20 марта 2009

В моем JFrame он зацикливается на выполнение какой-то задачи, я хочу видеть статус в заголовке JFrame, поэтому у меня что-то вроде этого:

frame.setTitle ("Текущее состояние [" + Auto_Count_Id + "/" + Auto_Count_Total + "]");

Но это не перекраска, как мне нужно. Поэтому я попробовал следующее:

<1>

    SwingUtilities.invokeLater(new Runnable() 
    {
      public void run()
      {
        frame.setTitle("Current status [ "+Auto_Count_Id+"/"+Auto_Count_Total+" ]");
      }
    });

и

    <2>
    // repaint(long time, int x, int y, int width, int height) 
    frame.repaint(10,0,0,500,300) 

Они тоже не работают, он перерисовывается только после завершения задачи, что я могу сделать?

Ответы [ 3 ]

3 голосов
/ 20 марта 2009

Не выполняйте свою тяжелую работу в ветке событий Swing. Создайте новый поток для своих расчетов, чтобы Swing мог использовать его для перекраски графического интерфейса.

0 голосов
/ 20 марта 2009

Да, SwingWorker - это путь.

Если вы используете Java 6, он поставляется с версией SwingWorker, которая содержит методы publish () и process (). Эти методы существуют для того, чтобы вы могли публиковать данные во время выполнения вашей долгосрочной задачи, а затем вы можете публиковать эти данные в потоке диспетчеризации событий.

Что вы можете сделать, это создать подкласс SwingWorker с заданной долгосрочной задачей. Затем внутри этой длительной задачи опубликуйте строку заголовка JFrame с помощью метода publish (). Перезапишите метод процесса, чтобы установить заголовок вашего JFrame.

Вот документация по API SwingWorker для Java 6

0 голосов
/ 20 марта 2009

Взгляните на класс SwingWorker .

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