Как Java делает свои окна? - PullRequest
3 голосов
/ 22 августа 2009

Как JVM создает свои окна, я знаю, что у нее есть файлы jar, исполняемые файлы и т. Д ... я хотел бы знать, как именно окно, созданное с помощью Java, рамки вокруг настольного приложения.

это стандарт графической библиотеки на машинах, на которых он установлен?

Ответы [ 3 ]

7 голосов
/ 22 августа 2009

В Java есть два типа компонентов пользовательского интерфейса: тяжелый и легкий.

Тяжелый компонент - это оболочка для чего-то, что существует в операционной системе. Windows как операционная система имеет методы для создания окон, диалоговых окон и т. Д.

Легкий компонент создается полностью внутри приложения с использованием API-интерфейсов 2D-рисования и тому подобного. Операционная система ничего не знает об этом.

Двумя "официальными" API Java GUI являются Swing и AWT. AWT обычно используется апплетами (в любом случае ранними). Он состоит из тяжелых компонентов. Swing построен на основе AWT, но является гораздо более обширным API для разработки, как правило, настольных приложений. Большинство компонентов Swing легкие.

Таким образом, настольное Java-приложение может состоять из одного или нескольких тяжеловесных компонентов, возможно, с добавлением некоторых облегченных компонентов. Или это могут быть все легкие компоненты, если API-интерфейсы 2D-рисования достаточны для «подделки» Windows без тяжеловесного компонента.

Кадр, который вы видите вокруг приложения Java, может быть нарисован с помощью библиотеки, такой как Java2D (либо напрямую, либо через компоненты, использующие этот или аналогичный API), либо он может быть создан Windows с настройкой из приложения, вероятно, под влиянием тема операционной системы и настройки дисплея.

Большинство приложений Java в наши дни легковесны.

0 голосов
/ 18 июля 2010

Просто чтобы быть завершенным: есть также SWT, который тонкий Java-слой поверх собственной реализации системы Windowing. Вроде как AWT переделано. Используется проектом Eclipse. Должен обеспечить более близкое соответствие с родным L & F, более быстрый рендеринг - но YMMV.

Недостаток SWT заключается в том, что вам необходимо изучить дополнительный API, и библиотеки должны быть доступны на всех целевых платформах. Например, до недавнего времени версия OS-X была довольно неполной и устаревшей (углерод, а не на основе какао).

0 голосов
/ 22 августа 2009

По умолчанию фреймы, java.awt.Frame или javax.swing.JFrame (или эквиваленты) будут отрисовываться базовой оконной системой. Недавно (2002), 1.4 представил Frame.setUndecorated и связанные с ним методы. Это позволяет рисовать рамку как неокрашенное окно (как это делает Window), и некоторые PL & F, такие как Metal, могут рисовать работающую рамку вместо делегирования оконной системе. Эта функциональность была, по-видимому, реализована, чтобы позволить целому окну выглядеть одинаково. Насколько я знаю, реализация внешнего вида Sun, целью которой является дублирование собственной оконной системы, не реализует эту функцию.

...