В чем разница между Swing и AWT?

Может кто-нибудь, пожалуйста, объясните мне, какая разница между Swing и AWT?

Существуют ли случаи, когда AWT более полезно/рекомендуется использовать, чем качание или наоборот?

Ответ 1

AWT - это интерфейс Java для собственного кода GUI системы, присутствующего в вашей ОС. Он не будет работать одинаково в каждой системе, хотя он и пытается.

Swing - это более-менее чистый Java-интерфейс. Он использует AWT для создания окна операционной системы, а затем рисует изображения кнопок, меток, текста, флажков и т.д. В это окно и отвечает на все ваши щелчки мыши, ключевые записи и т.д., Решая, что делать вместо того, чтобы позволить операционной системе справиться с этим. Таким образом, Swing на 100% переносим и является одним и тем же на разных платформах (хотя он доступен для скинов и имеет "подключаемый внешний вид", который может заставить его выглядеть более или менее похожим на то, как выглядят родные окна и виджеты).

Это очень разные подходы к инструментариям GUI и имеют много последствий. Полный ответ на ваш вопрос попытается изучить все эти вопросы.:) Вот пара:

AWT - это кросс-платформенный интерфейс, поэтому, хотя он использует базовую ОС или собственный инструментарий GUI для своей функциональности, он не обеспечивает доступ ко всему, что могут сделать эти инструментальные средства. Расширенные или новые виджеты AWT, которые могут существовать на одной платформе, могут не поддерживаться на другом. Возможности виджетов, которые не одинаковы на каждой платформе, могут не поддерживаться, или, что еще хуже, они могут работать по-разному на каждой платформе. Люди привыкли вкладывать много усилий, чтобы заставить их приложения AWT работать последовательно на разных платформах - например, они могут пытаться совершать вызовы в собственный код с Java.

Поскольку AWT использует собственные виджеты GUI, ваша ОС знает о них и обрабатывает их перед собой и т.д., тогда как виджеты Swing представляют собой бессмысленные пиксели в окне с точки зрения вашей ОС. Swing сама обрабатывает макет и укладку ваших виджетов. Смешивание AWT и Swing сильно неподдерживается и может привести к нелепым результатам, таким как собственные кнопки, которые скрывают все остальное в диалоговом окне, в котором они проживают, потому что все остальное было создано с помощью Swing.

Поскольку Swing пытается сделать все возможное в Java, отличном от очень необработанных графических подпрограмм, предоставляемых собственным графическим интерфейсом GUI, он по-прежнему подвергался значительному снижению производительности по сравнению с AWT. Это сделало Свинг, к сожалению, медленным. Тем не менее, это значительно сократилось за последние несколько лет благодаря более оптимизированным JVM, более быстрым машинам и (я полагаю) оптимизации внутренних компонентов Swing. Сегодня приложение Swing может работать достаточно быстро, чтобы быть работоспособным или даже незаметным и почти неотличимым от приложения, использующего собственные виджеты. Некоторые скажут, что потребовалось слишком много времени, чтобы добраться до этого момента, но большинство скажет, что это того стоит.

Наконец, вы также можете проверить SWT (набор инструментов GUI, используемый для Eclipse, и альтернативу AWT и Swing), что является частью возврата AWT к идее доступа к собственным виджетам через Java.

Ответ 2

Базовая разница, о которой уже упоминалось, состоит в том, что тяжелый вес, а другой легкий. Позвольте мне объяснить, в основном, что означает термин тяжелый вес: когда вы используете компоненты awt, собственный код, используемый для получения компонента представления , генерируется операционной системой, вот почему это выглядит и почувствуйте изменения от ОС до ОС.. Как и в компонентах swing, ответственность за JVM за создание представления для компонентов. Другое выражение, которое я видел, это swing на основе MVC и awt нет.

Ответ 3

Swing vs AWT. В основном AWT появился на первом месте и представляет собой набор элементов тяжелого UI (что означает, что они являются обертками для объектов операционной системы), тогда как Swing построен поверх AWT с более богатым набором легких компонентов.

Любая серьезная работа Java UI выполняется в Swing not AWT, которая в основном используется для апплетов.

Ответ 4

Насколько AWT может быть более полезным, чем Swing -

  • вы можете ориентироваться на более старую JVM или платформу, которая не поддерживает Swing. Это использовалось, чтобы действительно вступить в игру, если вы строили апплеты - вы хотели настроить таргетинг на самый низкий общий знаменатель, чтобы людям не приходилось устанавливать новый Java-плагин. Я не уверен, какая текущая наиболее распространенная версия плагина Java - сегодня это может быть иначе.
  • некоторые люди предпочитают внешний вид AWT над Swing "не совсем там". (Есть лучшие сторонние сторонние маски, чем Swing-реализации BTW) Многие люди предпочитали использовать AWT FileDialog над Swing FileChooser, потому что он дал диалоговое окно файла платформы, в котором большинство людей использовалось, а не "странное" пользовательское Swing.

Ответ 5

Из-за этой разницы между AWT и Swing возникает несколько последствий.

AWT - это тонкий слой кода поверх ОС, тогда как Swing намного больше. Swing также обладает гораздо более богатыми функциональными возможностями. Используя AWT, вы должны сами реализуйте много вещей, в то время как Swing использует их. GUI-интенсивная работа, AWT чувствует себя очень примитивно для работы по сравнению с Swing. Поскольку Swing реализует сам интерфейс GUI, а не полагается на ОС хоста, он может предложить более богатую среду на всех платформах, на которых работает Java. AWT более ограничен в обеспечении одинаковой функциональности на всех платформах потому что не все платформы реализуют одинаковые элементы управления в одном и том же пути.

Компоненты Swing называются "легкими", потому что они не требуют собственный объект ОС для реализации их функциональности. JDialog и JFrame являются тяжеловес, потому что у них есть сверстник. Поэтому такие компоненты, как JButton, JTextArea и т.д., являются легкими, потому что у них нет партнера по ОС.

A peer - это виджет, предоставляемый операционной системой, такой как или объект поля ввода.

Ответ 6

Swing:

  • Swing является частью классов java foundation.
  • Компоненты Swing не зависят от платформы.
  • Компоненты Swing - это легкие компоненты, потому что свинг находится на вершине awt.

AWT:

  • AWT называется инструментом абстрактного окна.
  • Компоненты AWT зависят от платформы.
  • Компоненты AWT представляют собой тяжеловесные компоненты.

Ответ 7

  • компонент swing обеспечивает очень гибкий пользовательский интерфейс, поскольку он следуйте за контроллером представления модели (mvc).
  • awt не основан на mvc.
  • swing работает быстрее.
  • awt не работает быстрее.
  • компоненты swing - это легкий вес.
  • компоненты awt имеют большой вес.
  • swing занимает меньше места в памяти.
  • awt занимает больше места в памяти.
  • компонент swing независим от платформы.
  • awt зависит от платформы.
  • swing требует пакет javax.swing.
  • Требуется пакет javax.awt.

Ответ 8

AWT 1. AWT занимает больше места в памяти 2. AWT зависит от платформы 3. AWT требует пакет javax.awt

качаетсясильного > 1. Качели занимают меньше места в памяти 2. Компонент Swing независим от платформы 3. Swing требует пакет javax.swing