JDialog не может упаковать (), только иногда - PullRequest
1 голос
/ 16 марта 2011

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

Затем, к моему удивлению, примерно в 80% случаев, когда я запускаю его, окно не может изменить размер.Это кажется совершенно случайным, поскольку теоретически каждый раз делает одно и то же.С какой стати это произошло бы по-другому с тем же кодом на той же машине через пять секунд?

Эта проблема, кстати, всплыла, когда я включил собственный интерфейс Windows для этого GUI.

1 Ответ

5 голосов
/ 16 марта 2011

По моему опыту, когда GUI делает случайные смешные вещи, подобные этой, это может быть признаком того, что вы не выполняете все ваши вызовы GUI в потоке диспетчеризации событий.

Убедитесь, что все ваши вызовы GUI из не-Потоки GUI обернуты в SwingUtilities.invokeLater или invokeAndWait.

Быстрый поиск в Google показал, что кажется отличным способом проверить, что ваше приложение соответствует правилам EDT: http://thejavacodemonkey.blogspot.com/2007/08/using-aspectj-to-detect-violations-of.html

...