Почему так много учебников по Java содержат примеры Swing, в которых не используется runnable?

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

У меня есть несколько учебников по Java, в основном несколько более старых версий, которые дешевле купить. Для многих из них в примерах Swing не используется исполняемый интерфейс и очередь диспетчеризации событий. (например, «Как программировать Java, 7-е издание», Deitel and Deitel, 2007 или «Java для чайников, 5-е издание», Barry Burd, 2011, или «Sams Teach Yourself Java in 24 Hours, 6-е издание», Роджерс Кейденхед, 2012).

Может ли кто-нибудь сказать мне, почему это так?
Это для простоты?
С каких это пор рекомендуется использовать очередь диспетчеризации событий (runnable доступна с JDK 1.0)?
Или что-то еще?


person itDontMeanAThing    schedule 02.03.2016    source источник
comment
1) Идиома программирования меняется со временем; 2) Что они делали вместо этого в былые времена HtPJ 7th Ed?   -  person Andy Turner    schedule 02.03.2016
comment
Я могу только догадываться. Простой графический интерфейс Swing работает независимо от того, запущен ли графический интерфейс в потоке отправки событий с помощью метода EventQueue или SwingUtilities invokeLater. Когда вы начинаете использовать дополнительные потоки, например, с анимацией, отсутствие invokeLater затрудняет диагностику проблем. Я использую invokeLater с Java 4, так что с тех пор это рекомендованная практика.   -  person Gilbert Le Blanc    schedule 02.03.2016
comment
7-е издание HtPJ было написано еще в 2007 году. Честно говоря, в нем упоминается очередь отправки событий, но не раньше, чем на странице 1059, после того, как было введено свинг. В предыдущих главах, посвященных колебаниям, один класс будет расширять JFrame, затем тестовый класс создаст и установитVisible экземпляр расширенного класса JFrame.   -  person itDontMeanAThing    schedule 02.03.2016
comment
Это другой вопрос. Класс Java следует расширять только в том случае, если вы хотите переопределить один или несколько методов в классе. Я понимаю, что не нужно вводить слишком много концепций Java одновременно, но большинство людей никогда не получают инструкций, выходящих за рамки простого расширения JFrame.   -  person Gilbert Le Blanc    schedule 02.03.2016
comment
Я отвечал на вопрос Энди Тернера. Подозреваю, что пишу нечетко из-за отсутствия опыта. Для примеров Swing в HtPJ 7th, Runnable / очередь отправки событий не используется, объект GUI просто создается в обычном основном методе. Однако даже для простых примеров в Oracle Java Tutorial используется Runnable. Почему-то меня это раздражает, когда я пытаюсь проработать примеры в книге.   -  person itDontMeanAThing    schedule 02.03.2016


Ответы (1)


Что ж, Sun со временем изменила рекомендации. Раньше все думали, что можно создавать экземпляры компонентов Swing из потока отправки событий (EDT).

См. Будет настоящее правило Swing Single Threading, встаньте, пожалуйста?

person keuleJ    schedule 02.03.2016
comment
Спасибо, это интересно. - person itDontMeanAThing; 02.03.2016