Как обновить метку, чтобы она отображала новый текст? - PullRequest
0 голосов
/ 29 июля 2010

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

statusLabel.setText("Completing Task 1");
System.out.println("Completing Task 1");
this.getFrame().repaint(); //I call this function and the two functions below it but the label still does not change.
statusLabel.updateUI(); //Doesn't seem to do much.
statusLabel.revalidate(); //Doesn't seem to do much.
this.completeTask1();
statusLabel.setText("Completing Task 2");
System.out.println("Completing Task 2");
statusLabel.revalidate();
this.getFrame().repaint();
...

Это продолжается до тех пор, пока пользовательский интерфейс не выполнит 4 задачи. В течение всего процесса метка не обновляется до тех пор, пока не будет выполнено каждое отдельное задание, и затем появляется надпись «Завершение задания 4». Хотя вызовы System.out.println работают отлично. По сути, мне интересно, что мне нужно сделать, чтобы ярлык отображал новый установленный текст.

1 Ответ

1 голос
/ 13 ноября 2012

CODe ответ правильный, но я бы пошел с SwingWorker класс:

Абстрактный класс для выполнения длительных взаимодействующих с GUI задач в выделенном потоке.

Это правильный инструмент для вашей проблемы.

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