Как использовать индикатор выполнения в Java (графический интерфейс Netbeans)

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

  • В настоящее время я могу получить количество файлов в каталоге и рассчитать процент загруженных файлов.
  • Файлы успешно загружаются в массив, но индикатор выполнения обновляется только после загрузки всех файлов. Я пробовал перепроверять и перерисовывать во время цикла, но это не работает.
  • Я пробовал различные учебники по docs.oracle, но, похоже, ничего не работает.
  • Я считаю, что SwingWorker — это класс, который я должен использовать, это правильно?

Любая помощь с примером или советом будет принята с благодарностью! Спасибо!


person Matthew Mills    schedule 17.08.2012    source источник


Ответы (1)


Да, вы попали в ловушку всех новых Swing-программистов — событие Отправка темы

По сути, это Thread является сердцем любой системы Swing. Is отвечает за отправку событий всем компонентам пользовательского интерфейса, а также за запросы к диспетчеру перерисовки для обновления пользовательского интерфейса.

Если вы выполняете какие-либо трудоемкие задачи в EDT, вы предотвратите обновление пользовательского интерфейса.

Я предлагаю вам начать с прочтения Worker Threads и SwingWorker и параллелизм в Swing и, поскольку я знаю вы спросите, прочитайте этот ответ, в нем есть несколько примеров использования SwingWorker, Проблемы с добавлением JTextArea

person MadProgrammer    schedule 17.08.2012