2010-11-26 1 views
2

Сценарий таков: у меня есть приложение Java swing с JFrame. Существует текстовое поле, где вы можете вводить вещи, затем вы получаете результаты поиска в другом текстовом поле, и когда вы выбираете один из результатов, появляется кнопка «Загрузить». И здесь возникает проблема. Когда вы нажмете «Загрузить», приложение должно отобразить информацию о полноте загруженных файлов. Я делаю это с расширением класса, называемым DownloadManager, который обновляет информацию в течение определенного периода времени. Однако я обеспокоен тем, что могут возникнуть проблемы с синхронизацией. Существует ли стандартный способ обновления такой динамической информации без потоков? В Java-классах swing есть mainloop или что-то в этом роде. Как ты делаешь это?Что лучше - mainloop или отдельные темы?

ответ

2

Все, что обновляет графический интерфейс на Java, должно выполняться потоком отправки событий GUI. Чтобы заставить метод запускаться в этом потоке, вам нужно использовать SwingUtilities.invokeLater. Выполнение чего-либо еще может потенциально привести к зависанию графического интерфейса, а не к обновлению или другой странности!

Это хороший учебник, который описывает его лучше, чем я:

http://www.javamex.com/tutorials/threads/invokelater.shtml

2

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

 Смежные вопросы

  • Нет связанных вопросов^_^