Введение | 11 |
|
Java Foundation Classes | 12 |
Структура книги | 13 |
Для кого предназначена книга | 16 |
Интерактивная документация | 17 |
Язык шаблонов проектирования | 17 |
Примеры | 17 |
Отзывы и комментарии | 18 |
От издательства | 18 |
|
Глава 1 • Основные концепции | 19 |
|
В начале было… AWT | 20 |
Компоненты Swing — это легковесные компоненты AWT | 27 |
Совместное использование компонентов AWT и Swing | 30 |
Архитектура JavaBeans | 32 |
Соглашение об именах | 34 |
Расширенные возможности | 36 |
Компоненты Swing — это компоненты JavaBeans | 39 |
Подключаемые внешний вид и поведение | 40 |
Архитектура MVC | 41 |
Всё ли так хорошо в MVC? | 44 |
Решение Swing — представители пользовательского интерфейса | 45 |
Как всё работает | 47 |
Управление внешним видом и поведением программы | 48 |
Специальные средства для пользователей с ограниченными возможностями | 51 |
Резюме | 52 |
|
Глава 2 • Модель событий | 53 |
|
Наблюдатели | 54 |
Слушатели | 56 |
Схема именования событий JavaBeans | 58 |
Стандартные события | 60 |
Техника написания слушателей | 64 |
Адаптеры | 64 |
Каждому событию — по слушателю | 66 |
Диспетчеризация | 72 |
Проблема висячих ссылок | 74 |
Создание собственных событий | 75 |
Список EventListenerList | 80 |
За кулисами системы обработки событий | 81 |
Поток EventDispatchThread и очередь событий EventQueue | 82 |
Доставка событий методам processXXXEvent() | 84 |
Маскирование и поглощение событий | 88 |
Работа с очередью событий | 92 |
Влияние на программы потока EventDispatchThread | 94 |
Резюме | 99 |
|
Глава 3 • В глубинах Swing | 100 |
|
Рисование в AWT | 101 |
Легковесные компоненты в AWT | 103 |
Рисование в Swing | 107 |
Метод paint() | 108 |
Метод paintComponent() | 110 |
Метод paintBorder() | 111 |
Метод paintChildrenO | 112 |
Методы рисования — краткий итог | 113 |
Программная перерисовка — метод repaint() и класс RepaintManager | 115 |
Проверка корректности компонентов | 118 |
Отладка графики | 120 |
Клавиатурные сокращения | 123 |
Класс Keystroke | 124 |
Карты входных событий и команд | 124 |
Методы поддержки клавиатурных сокращений | 127 |
Система передачи фокуса ввода | 130 |
Настройка системы передачи фокуса | 131 |
Новые возможности | 135 |
Взгляд изнутри — класс KeyboardFocusManager | 136 |
Всплывающие подсказки и клиентские свойства | 138 |
Резюме | 139 |
|
Глава 4 • Контейнеры высшего уровня | 140 |
|
Корневая панель JRootPane | 141 |
Многослойная панель JLayeredPane | 142 |
Панель содержимого | 146 |
Строка меню | 147 |
Прозрачная панель | 148 |
Корневая панель — итог | 152 |
Окна Swing | 155 |
Окно без рамки JWindow | 155 |
Окно с рамкой JFrame | 158 |
События окон | 159 |
Диалоговое окно JDialog | 161 |
Специальное оформление окон | 163 |
Кратко об апплетах—класс JApplet | 165 |
Резюме | 167 |
|
Глава 5 • Искусство расположения | 168 |
|
Как работает менеджер расположения | 169 |
Стандартные менеджеры расположения | 174 |
Полярное расположение BorderLayout | 175 |
Последовательное расположение FlowLayout | 176 |
Табличное расположение GridLayout | 178 |
Расположения GridBagLayout и CardLayout | 180 |
Новинка — расположение SpringLayout | 181 |
Абсолютное расположение | 182 |
Вложенные расположения | 182 |
Блочное расположение BoxLayout | 183 |
Общий подход | 195 |
Рекомендации от Sun | 196 |
Реализация в коде | 200 |
Резюме | 204 |
|
Глава 6 • Вывод вспомогательной информации | 205 |
|
Надписи JLabel | 205 |
Значки Icon | 208 |
Использование HTML | 210 |
Надписи и события | 214 |
Надписи и мнемоники | 214 |
Всплывающие подсказки | 216 |
Настройка подсказок | 219 |
Рамки | 221 |
Фабрика BorderFactory | 224 |
Создание собственных рамок | 225 |
Рамки и разработка собственных компонентов | 228 |
Резюме | 230 |
|
Глава 7 • Элементы управления | 231 |
|
Кнопки JButton | 231 |
Внешний вид кнопок | 232 |
У кнопок есть модель | 236 |
Обработка событий от кнопок | 238 |
Мнемоники | 240 |
Интерфейс Action | 243 |
Элементы управления с двумя состояниями | 245 |
Выключатели JToggleButton | 245 |
Группы элементов управления ButtonGroup | 247 |
Переключатели JRadioButton | 249 |
Флажки JCheckBox | 250 |
Резюме | 251 |
|
Глава 8 • Меню и панели инструментов | 252 |
|
Меню | 252 |
Создание системы меню | 253 |
Строка меню JMenuBar | 255 |
Выпадающие меню JMenu и разделители JSeparator | 256 |
Клавиатурные сокращения и мнемоники | 258 |
Всплывающие меню JPopupMenu | 260 |
Загрузка меню из файлов XML | 262 |
Панели инструментов | 270 |
Простые панели инструментов | 271 |
Комбинирование панелей инструментов | 273 |
Резюме | 276 |
|
Глава 9 • Списки | 277 |
|
Обычные списки JList | 277 |
Модели | 279 |
Выделение | 285 |
Внешний вид списка | 289 |
События списка | 294 |
Список с флажками | 298 |
Раскрывающиеся списки JComboBox | 302 |
Модель ComboBoxModel | 304 |
Внешний вид списка | 310 |
Редактирование | 312 |
События раскрывающегося списка | 318 |
Управление всплывающим меню | 320 |
Резюме | 321 |
|
Глава 10 • Диапазоны значений | 322 |
|
Ползунки JSIider | 323 |
Модель BoundedRangeModel | 325 |
События ползунков | 327 |
Дополнительная настройка внешнего вида | 329 |
Индикаторы процесса JProgressBar | 331 |
Когда ничего не ясно | 335 |
Небольшие хитрости | 336 |
Счётчики JSpinпег | 338 |
Выбор дат | 341 |
Редактор элементов | 344 |
Резюме | 348 |
|
Глава 11 • Управление пространством | 349 |
|
Панель с вкладками JTabbedPane | 350 |
Модель выделения и обработка событий | 354 |
Дополнительные возможности компонента JTabbedPane | 356 |
Разделяемая панель JSplitPane | 358 |
Свойства разделяемой панели | 361 |
События разделяемой панели | 362 |
Панель прокрутки JScrollPane | 363 |
Управление прокруткой | 365 |
Компонент JVIewport — рабочая лошадка | 369 |
Заголовки и уголки панели прокрутки JScrollPane | 372 |
Полосы прокрутки JScrollBar | 375 |
Резюме | 377 |
|
Глава 12 • Стандартные диалоговые окна | 378 |
|
Многоликий класс JOptionPane | 379 |
Вывод сообщений | 380 |
Ввод данных | 383 |
Получение подтверждений | 386 |
Дополнительные возможности | 389 |
Выбор файлов в компоненте JFileChooser | 390 |
Фильтры файлов | 393 |
Внешний вид файлов | 395 |
Дополнительные компоненты | 397 |
Выбор цвета в компоненте JColorChooser | 401 |
Резюме | 403 |
|
Глава 13 • Уход за деревьями | 404 |
|
Простые деревья | 405 |
Модель дерева TreeModel | 407 |
Узлы TreeNode | 411 |
Стандартная модель DefaultTreeModel | 413 |
Выделение | 416 |
Внешний вид деревьев | 421 |
Дерево с флажками | 425 |
Редактирование узлов | 430 |
Создание собственного редактора | 433 |
Резюме | 437 |
|
Глава 14 • Текстовые компоненты | 438 |
|
Каталог текстовых компонентов | 439 |
Текстовые поля | 440 |
Многострочное поле JTextArea | 443 |
Редактор JEditorPane | 446 |
Редактирование по максимуму — компонент JTextPane | 450 |
Форматированный вывод — компонент JFormattedTextField | 454 |
Модель документа Document | 459 |
Текстовое поле с автоматическим заполнением | 461 |
Отмена и повтор операций | 466 |
Управление курсором — интерфейс Caret | 468 |
Резюме | 470 |
|
Глава 15 • Таблицы | 471 |
|
Простые таблицы | 471 |
Простая настройка внешнего вида | 475 |
Модели таблицы JTable | 477 |
Модель данных TableModel | 478 |
Модель таблицы для работы с базами данных | 485 |
Модель столбцов таблицы | 490 |
Модели выделения | 497 |
Внешний вид ячеек таблицы | 501 |
Редактирование ячеек таблицы | 506 |
Редактор дат | 508 |
Заголовок таблицы JTableHeader | 511 |
Резюме | 514 |
|
Алфавитный указатель | 515 |