Java Swing - заморозка пользовательского интерфейса - PullRequest
6 голосов
/ 06 июля 2010

Я делаю некоторую подпрограмму в Java (1.5) + Swing, которая требует некоторого времени. Как наилучшим образом реализовать эту маршрутизацию вне колебательного потока, чтобы избежать зависания пользовательского интерфейса?

Заранее спасибо

Ответы [ 3 ]

7 голосов
/ 06 июля 2010

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

Вы можете получить версию для Java 1.5 здесь .С 1.6 это часть стандартного API.

3 голосов
/ 07 июля 2010

Использование SwingWorker, конечно, хорошая идея, и я рекомендую это.Также пишите пользовательские javax.swing.Timer s и java.lang.Thread s.

Но не забывайте использовать profiler - это может помочь вам найти много проблем.Например, у Swing часто возникают проблемы с «мертвыми» слушателями , содержащими некоторые ссылки, которые невозможно собрать мусором (что приводит к очень медленным ответам, зависанию пользовательского интерфейса или даже утечкам памяти).Профилировщик поможет вам исследовать потребности памяти в конкретных ситуациях при использовании вашего приложения, и, следовательно, вы сможете выполнить тонкую настройку своего приложения.

1 голос
/ 11 августа 2010

Решено как комментарий:

"Это может помочь: stackoverflow.com / Вопросы / 2564388 / javas-swing-threading - Andreas_D 5 июля в 22:01"

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