Объяснение модели Swing в Java GUI
-
21-08-2019 - |
Вопрос
Я уже некоторое время работаю с Swing, но вся модель/структура JFrame
с, paint()
, super
, и т. д. у меня в голове все туманно.Мне нужно четкое объяснение или ссылка, которая объяснит, как устроена вся система графического интерфейса.
Решение
То же самое произошло и со мной.На самом деле по сей день я не совсем понимаю, как все это работает.
Swing — очень гибкая среда, возможно, даже слишком гибкая.С гибкостью приходит много абстракции, а с абстракцией приходит путаница.:)
Я нашел следующие статьи достойными прочтения.Они помогли мне лучше понять общую картину Swing.
- Обзор архитектуры Swing
Процесс установки делегата пользовательского интерфейса, это просто изображение:
Они довольно хорошо объясняют, как работают модель и делегат.Меня всегда бесит, когда я вижу эти JLabel
, LabelUI
, ui.update
, и т. д.
Другие советы
Вы просмотрели руководство по Java Swing (нажмите здесь)?Он довольно хорошо описывает основы разработки приложений Swing.
Поскольку этот вопрос отмечен тегом JFrame
, предложу несколько ссылок для понимания того, как JFrame
s и другие контейнеры Swing верхнего уровня работают.
Я также обнаружил, что Swing был (и остается) весьма вовлеченным, и время от времени требуется просматривать документацию, предоставленную Sun. Каждый раз, когда я проверяю, я, кажется, узнаю что-то новое.
Сначала основы: JFrame
класс из спецификаций Java API.Спецификации API Java часто предоставляют хорошую подробную информацию о классах.В этом случае вы заметите, что есть несколько ссылок, таких как Как сделать рамки раздел из Учебных пособий по Java.
Помимо этого, я также рекомендую посмотреть Урок:Использование компонентов Swing из Учебников по Java.В уроке представлены инструкции по использованию компонентов Swing, а также несколько полезных примеров.
Что касается более подробной информации, которая меня смущала, когда я начал работать с Swing, это различные типы панелей, такие как ContentPane
, RootPane
, GlassPane
.А Использование контейнеров верхнего уровня В разделе представлена информация и полезные диаграммы по иерархии контейнеров верхнего уровня.А Как использовать корневые панели В разделе подробно описаны панели «Стеклянная», «Многослойная» и «Содержимое» с множеством примеров.
я нашел Свинг-исследователь быть ценным инструментом для понимания иерархии компонентов (особенно в сложных графических интерфейсах) и просмотра свойств (увы, доступных только для чтения:мы привыкаем к удобству Firebug!).У него есть плагин Eclipse.
Невероятно богатые клиенты Чета Хаазе и Ромена Гая — отличная книга о пользовательском интерфейсе Java.В нем рассматриваются и более сложные вещи, но введение и несколько первых глав хорошо объясняют фундаментальные вещи.
Если после прочтения руководства по Swing вы обнаружите, что вас интересуют более сложные темы, вы также можете просмотреть Свинг, второе издание Робинзон и Воробьев.
Я обнаружил, что простой просмотр исходного кода (щелкните имя, удерживая клавишу CTRL, если вы используете NetBeans) очень полезен.Если я увижу в диалоговом окне завершения метод, с которым я не знаком, я просто нажму «Перейти к исходному коду» и оглянусь вокруг, пока не освоюсь с ним.