#java #model-view-controller #swing #awt
#java #модель-представление-контроллер #swing #awt
Вопрос:
Я изучаю разработку Java GUI для инструмента биологического анализа. Мой вопрос в том, могу ли я использовать библиотеки AWT и SWING в рамках одного шаблона проектирования элементов управления Model View? Или эти две библиотеки управляются по-разному? Я хотел бы знать, могу ли я объединить их под одной крышей в целях повторного использования существующего кода, написанного с использованием обеих библиотек. Большое вам спасибо за ваше время.
Комментарии:
1. Какой MVC? Забавная вещь с MVC заключается в том, что существует так много разных MVC, что вы не знаете, какой из них выбрать: MVC type1, type2, HVMC / HPAC? HMVC — мой любимый на данный момент 🙂
2. @SyntaxT3rr0r и, в частности, книги, которые служат надежными руководствами / ссылками на MVC? У меня есть шаблоны проектирования с головой, но с моим академическим образованием это читается как мультфильм.
Ответ №1:
Swing построен поверх AWT, вы можете смешивать Swing и AWT, и технически это будет работать, но с некоторыми ограничениями:
-
тяжелые компоненты против легковесных: компоненты в AWT имеют тяжелый вес — они соответствуют окну собственной ОС. Это означает, что все компоненты AWT отображаются над родственными компонентами Swing. (Например. поместите список awt и swing JList в один контейнер, и список всегда будет отображаться над JList.)
-
Внешний вид: компоненты AWT выглядят как родные, поскольку они являются родными компонентами. Компоненты Swing имеют подключаемый внешний вид, который определяет их внешний вид и поведение. Если вы выберете L amp; F в соответствии с родной платформой, эти компоненты будут всего лишь «имитациями» собственного внешнего вида и могут вести себя иначе, чем их аналоги AWT. (Например, JButton против awt Button.)
По этим причинам может быть разумно использовать только одну библиотеку пользовательского интерфейса, предположительно Swing.
РЕДАКТИРОВАТЬ: JDK 6 (обновление 12) предлагает бесшовную интеграцию тяжелых и облегченных компонентов, поэтому смешивание будет работать без проблем. Итак, первый пункт больше не соответствует действительности, но несоответствующий внешний вид между двумя наборами инструментов пользовательского интерфейса все еще сохраняется.
Ответ №2:
Привет, да, вы можете использовать оба. Но в этом нет необходимости, более того, крайне не рекомендуется смешивать эти два.
Например, у вас могут возникнуть серьезные проблемы, поскольку AWT не имеет концепции «глубины». Никаких разных слоев и т.д. Другие проблемы заключаются, например, в различии внешнего вида компонентов этих фреймворков.
РЕДАКТИРОВАТЬ: мне нравится этот ресурс. Продолжайте и прочитайте это, там упомянуты все проблемы с наглядными примерами, о которых вы должны знать, когда собираетесь смешивать эти два. http://java.sun.com/products/jfc/tsc/articles/mixing
Эй, Боро.