Иван Портянкин
Swing: Эффектные пользовательские интерфейсы
Издательство «Лори»
Swing: Эффектные пользовательские интерфейсы
издание 2-ое
♥ Иван Портянкин
Верстка Глазова Т.
♥ Издательство “Лори”, 2011
Изд. № : OAI (03)
ЛР № : 07612 30.09.97 г. ISBN 978-5-85582-305-9
Подписано в печать 20.09.2011 Формат 70 x 100/16 Бумага газетная Гарнитура Баскервиль Печать офсетная Печ. л. 24.5 Тираж 1000 Заказ № Цена договорная
Издательство “Лори” 123100, Москва, Шмитовский пер., д. 13/6, стр. 1 (пом. ТАРП ЦАО)
телефон для оптовых покупателей; (499)2560983 размещение рекламы; (499)2590162 www.lory-press.ru
Отпечатано в типографии ООО “Тиль-2004” Москва, ул. Электрозаводская д. 21
Содержание |
|
Введение.............................................................................................................. |
ix |
Глава 1. Основные концепции .......................................................................... |
1 |
В начале было... AWT................................................................................. |
2 |
Компоненты Swing — это легковесные компоненты AWT ......................... |
5 |
Совместное использование компонентов AWT и Swing ............................ |
7 |
Архитектура JavaBeans.............................................................................. |
8 |
Соглашение об именах................................................................................. |
9 |
Расширенные возможности ....................................................................... |
11 |
Привязанные свойства........................................................................ |
11 |
Ограниченные свойства...................................................................... |
11 |
Индексированные свойства ................................................................ |
12 |
Редакторы свойств............................................................................. |
12 |
Описание компонента ......................................................................... |
12 |
Постоянство........................................................................................ |
13 |
Компоненты Swing — это компоненты JavaBeans ................................... |
13 |
Подключаемые внешний вид и поведение............................................. |
14 |
Архитектура MVC........................................................................................ |
15 |
Все ли так хорошо в MVC?......................................................................... |
18 |
Решение Swing — представители пользовательского интерфейса........ |
19 |
Как все работает......................................................................................... |
20 |
Управление внешним видом и поведением программы.......................... |
21 |
Специальные средства для пользователей с ограниченными |
|
возможностями......................................................................................... |
25 |
Локализация приложений........................................................................ |
26 |
Резюме ........................................................................................................................ |
26 |
Глава 2. Модель событий................................................................................. |
27 |
Наблюдатели ............................................................................................ |
28 |
Слушатели ................................................................................................ |
29 |
Схема именования событий JavaBeans ................................................. |
32 |
Стандартные события.............................................................................. |
33 |
Техника написания слушателей.............................................................. |
37 |
Адаптеры..................................................................................................... |
38 |
Каждому событию — по слушателю.......................................................... |
39 |
Внутренние классы.............................................................................. |
40 |
Быстро и грязно................................................................................... |
42 |
Диспетчеризация ........................................................................................ |
43 |
Проблема висячих ссылок ......................................................................... |
46 |
Создание собственных событий ............................................................. |
47 |
Список EventListenerList ............................................................................. |
52 |
События от мыши и волшебный метод contains().................................. |
53 |
Резюме ...................................................................................................... |
55 |
Глава 3. За кулисами системы обработки событий.................................... |
56 |
Поток EventDispatchThread и очередь событий EventQueue................... |
56 |
Доставка событий методам processXXXEvent() ....................................... |
58 |
IV |
|
Содержание |
|
Маскирование и поглощение событий...................................................... |
62 |
|
Работа с очередью событий ...................................................................... |
67 |
|
Влияние на программы потока EventDispatchThread............................... |
68 |
|
Отзывчивость программы и SwingWorker ................................................. |
73 |
|
Почему мы так запускаем Swing-приложения.......................................... |
75 |
|
Отладка потоков в системе событий...................................................... |
78 |
|
Резюме ...................................................................................................... |
79 |
Глава 4. |
Рисование в Swing ........................................................................... |
80 |
|
Система рисования.................................................................................. |
80 |
|
Метод paint() — резюме.............................................................................. |
83 |
|
Метод repaint() — пара дополнений.......................................................... |
84 |
|
Рисование легковесных компонентов....................................................... |
84 |
|
Легковесные компоненты: резюме............................................................ |
89 |
|
Система рисования Swing ....................................................................... |
89 |
|
Кэширование............................................................................................... |
90 |
|
Разделение обязанностей.......................................................................... |
91 |
|
Метод paintComponent() ............................................................................. |
91 |
|
Метод paintBorder() ..................................................................................... |
92 |
|
Метод paintChildren()................................................................................... |
93 |
|
Общая диаграмма рисования в Swing ...................................................... |
94 |
|
Программная перерисовка в Swing........................................................... |
95 |
|
Рисование в Swing: резюме...................................................................... |
96 |
|
Рисование «готовых» компонентов........................................................... |
96 |
|
Рисование вне рамок............................................................................... |
99 |
|
RepaintManager как прикладной инструмент ......................................... |
99 |
|
Отладка графики.................................................................................... |
102 |
|
Резюме .................................................................................................... |
105 |
Глава 5. |
Внутренние винтики Swing ........................................................... |
106 |
|
Проверка корректности компонентов................................................... |
106 |
|
Метод Swing: revalidate() .......................................................................... |
108 |
|
Проверка корректности в Swing: резюме................................................ |
110 |
|
Клавиатурные сокращения..................................................................... |
111 |
|
Класс KeyStroke ........................................................................................ |
111 |
|
Карты входных событий и команд........................................................... |
112 |
|
Методы поддержки клавиатурных сокращений...................................... |
113 |
|
Система передачи фокуса ввода.......................................................... |
116 |
|
Настройка системы передачи фокуса..................................................... |
117 |
|
Расширенные возможности ..................................................................... |
120 |
|
Всплывающие подсказки и клиентские свойства................................. |
121 |
|
Резюме .................................................................................................... |
122 |
Глава 6. Контейнеры высшего уровня ........................................................ |
123 |
|
|
Корневая панель JRootPane.................................................................. |
123 |
|
Многослойная панель JLayeredPane....................................................... |
124 |
|
Панель содержимого................................................................................ |
129 |
|
Строка меню.............................................................................................. |
130 |
|
Прозрачная панель................................................................................... |
131 |
|
Корневая панель — итог .......................................................................... |
136 |
|
Расширение границ — J(X)Layer ............................................................. |
139 |
|
Окна Swing .............................................................................................. |
142 |
Окно без рамки JWindow .......................................................................... |
142 |
Содержание |
V |
Окно с рамкой JFrame .............................................................................. |
145 |
События окон............................................................................................ |
146 |
Диалоговое окно JDialog .......................................................................... |
147 |
Специальное оформление окон.............................................................. |
150 |
Прозрачность и произвольные формы ................................................... |
152 |
Кратко об апплетах — класс JApplet..................................................... |
154 |
Многооконное окружение....................................................................... |
156 |
Внутренние окна JInternalFrame .............................................................. |
159 |
Резюме .................................................................................................... |
160 |
Глава 7. Искусство расположения................................................................ |
161 |
Как работает менеджер расположения ................................................ |
162 |
Стандартные менеджеры расположения............................................. |
167 |
Полярное расположение BorderLayout ................................................... |
167 |
Последовательное расположение FlowLayout ....................................... |
169 |
Табличное расположение GridLayout ...................................................... |
171 |
Динамические вкладки и CardLayout....................................................... |
174 |
Менеджер расположения SpringLayout................................................... |
174 |
Абсолютное расположение...................................................................... |
176 |
Вложенные расположения....................................................................... |
176 |
Блочное расположение BoxLayout .......................................................... |
177 |
Расстояние между компонентами................................................... |
180 |
Проблема с распорками..................................................................... |
186 |
Выравнивание компонентов по осям............................................... |
187 |
Расположение по группам: GroupLayout ................................................. |
191 |
Гибкая сетка: GridBagLayout .................................................................... |
191 |
Быстрый язык MigLayout........................................................................ |
198 |
Общий подход......................................................................................... |
200 |
Рекомендации от Sun ............................................................................... |
202 |
Рекомендации по расположению и класс LayoutStyle ........................... |
203 |
Реализация в коде: вложенные блоки..................................................... |
204 |
Реализация: гибкая сетка......................................................................... |
211 |
Резюме .................................................................................................... |
212 |
Глава 8. Вывод вспомогательной информации....................................... |
213 |
Надписи JLabel ....................................................................................... |
213 |
Значки Icon ................................................................................................ |
216 |
Использование HTML ............................................................................... |
218 |
Надписи и события................................................................................... |
220 |
Надписи и мнемоники............................................................................... |
220 |
Всплывающие подсказки....................................................................... |
222 |
Настройка подсказок ................................................................................ |
225 |
Рамки....................................................................................................... |
227 |
Фабрика BorderFactory ............................................................................. |
231 |
Создание собственных рамок.................................................................. |
232 |
Рамки и разработка собственных компонентов ..................................... |
236 |
Резюме .................................................................................................... |
238 |
Глава 9. Элементы управления..................................................................... |
239 |
Кнопки JButton ........................................................................................ |
239 |
Внешний вид кнопок ................................................................................. |
239 |
У кнопок есть модель................................................................................ |
244 |
Обработка событий от кнопок.................................................................. |
245 |