Заставить JLabel отображать текст перед дорогой операцией - PullRequest
1 голос
/ 31 июля 2011

У меня проблемы с получением JLabel для отображения текста непосредственно перед обновлением его ImageIcon.

У меня есть JLabel фиксированного размера, который будет отображать либо текст, либо изображение, которое идеально ему подходит. Я пытаюсь заставить его отображать текст «Идет загрузка ...», а затем сразу после этого заставляет его загрузить изображение с URL-адреса и заменить его текстом.

...

public void setImage()
{
   URL url = new URL("http://www.website.com/pathtoimage/image.png");

   jLabel1.setIcon(null);
   jLabel1.setText("Loading...");

   ImageIcon ii = new ImageIcon(url);
   jLabel1.setIcon(ii);
}

...

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

Приведенный выше код не отображает текст; все, что происходит, это зависание приложения при загрузке изображения и его отображении за доли секунды, в основном, как и ожидалось. Как я могу заставить Swing обновить JLabel, прежде чем перейти к замене его на изображение? Или вы знаете другой, более эффективный способ добиться этого?

1 Ответ

4 голосов
/ 31 июля 2011

Взгляните на SwingWorker и прочитайте здесь о GUI / Threads / Background Threads (не только первую страницу, на которую я ссылался, но и следующие) Thread Dispatch Thread ;)

...