Java Advanced Интерфейс пользователя Часть 2. 2 СПбГУ ИТМО Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Содержание 1.События и слушатели 2.Кнопки.

Презентация:



Advertisements
Похожие презентации
1 Обработка событий Событие – объект специального класса, описывающий изменение состояния объекта источника. Классы для обработки событий находятся в пакете.
Advertisements

Урок повторения по теме: «Сила». Задание 1 Задание 2.
Школьная форма Презентация для родительского собрания.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
1. Определить последовательность проезда перекрестка
Michael Jackson
Типовые расчёты Растворы
Обработка события в Java. События Стратегия обработки событий в Java 1.1 Прослушиватель событий – это класс, который реализует интерфейс java.awt.event.EventListener,
Разработал: Учитель химии, биологии высшей квалификационной категории Баженов Алексей Анатольевич.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
Многопоточное программирование на Java Java Advanced.
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от
Многопоточное программирование на Java Java Advanced.
(урок математики). Назовите числа, которые делятся на 3: (3, 6, 9, 12, 15, 18, 21, 24, 27, 30) Назовите числа, которые делятся на 4: (4, 8,12, 16, 20,
Ф. Т. Алескеров, Л. Г. Егорова НИУ ВШЭ VI Московская международная конференция по исследованию операций (ORM2010) Москва, октября 2010 Так ли уж.
Введение в GUI. Возможности графических библиотек GUI-библиотеки Java (GUI – для standalone applications или applets) AWT – вызов native-компонентов =>
Java Advanced XML Transformations 1.0 (XSLT 1.0).
Транксрипт:

Java Advanced Интерфейс пользователя Часть 2

2 СПбГУ ИТМО Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Содержание 1.События и слушатели 2.Кнопки и действия 3.Управление с клавиатуры 4.Управление фокусом 5.Look and Feel 6.Заключение

События и слушатели Часть 1

4Georgiy KorneevJava Advanced / Интерфейс пользователя 2 События Информация об изменении состояния Корневой класс EventObject Подклассы XXXEvent Методы Object getSource() – инициатор события

5Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Классификация событий Низкоуровневые события Создаются системой на основе действий пользователя Инициатор события – текущая компонента Высокоуровневые события Создаются компонентами на основе других событий Инициатор события – компонента создавшая событие

6Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Слушатели Оповещаются о возникновении события Интерфейсы XXXListener Управление слушателями Метод addXXXListener(XXXListener listener) – добавить слушателя Метод removeXXXListener(XXXListener listener) – убрать слушателя

7Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Обработка событий Низкоуровневые события Высокоуровневые события

8Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Низкоуровневые события Ввод пользователя InputEvent – базовый класс KeyEvent – событие клавиатуры MouseEvent – событие мыши MouseWheelEvent – событие колеса прокрутки Изменение состояния компоненты ComponentEvent – изменение видимости / размера / местоположения компонента FocusEvent – изменение фокуса ContainerEvent – добавление / удаление компонент WindowEvent – операции с окнами

9Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Обработка низкоуровневых событий Генерация событий Клавиатурные – для компоненты владеющей фокусом Мыши – для компоненты, над которой находится мышь Прочие – для компоненты с которой произошли Событие ввода может быть поглощено Метод consume()

10Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Высокоуровневые события Примеры ActionEvent – нажатие на кнопку MenuEvent – операции с меню PopupMenuEvent – операции с всплывающим меню …

11Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Подтипы событий Событие может иметь несколько подтипов, для которых у слушателя вызываются разные методы Пример Событие KeyEvent Класс KeyListener Метод keyTyped(KeyEvent) Метод keyPressed(KeyEvent) Метод keyReleased(KeyEvent)

12Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Создание слушателей Реализация слушателя 1. Реализовать интерфейс 2. Добавить слушателя к компоненту 3. Реагировать на события Вспомогательные классы XXXAdapter – для реализации слушателей с несколькими методами

13Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Пример слушателя Проверка нажатия клавиши F1 public class F1EventListener extends KeyAdapter implements KeyListener { public void keyTyped(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_F1 && e.getModifiers() == 0) { // Нажата клавиша F1 }

Кнопки и действия Часть 2

15Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Типы кнопок AbstractButton Базовый класс JButton Простая кнопка JToggleButton Кнопка с двумя состояниями JCheckBox Кнопка с флажком JRadioButton Кнопка переключатель JMenuItem Элемент меню

16Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Нажатие на кнопку Событие ActionEvent Свойства getActionCommand() – название команды getModifiers() – состояние клавиш-модификаторов getWhen() – когда произошло Слушатель ActionListener Метод actionPerformed(ActionEvent e)

17Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Базовый класс для кнопок (1) Класс AbstractButton Конструкторы AbstractButton() – конструктор по умолчанию Методы doClick() – нажать на кнопку isSelected() – состояние кнопки

18Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Базовый класс кнопок (2) Свойства action – ассоциированное действие actionCommand – название команды label – надпись на кнопке enabled – разрешено ли нажимать icon, disabledIcon, pressedIcon – иконки horizontal(vertical)Alignment – выравнивание текста и иконки horizontal(vertical)TextPosition – положение текста относительно иконки margin -- отступы

19Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Обыкновенные кнопки Класс JButton Конструкторы JButton(text?, icon?) Методы JRootPane.setDefaultButton(JButton) – устанавливает кнопку по умолчанию

20Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Кнопки с флажком Класс JCheckBox Конструкторы JCheckBox(text?, icon?, selected?)

21Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Кнопки-переключатели Класс JRadioButton Конструкторы JCheckBox(text?, icon?, selected?)

22Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Группы кнопок Класс ButtonGroup – набор кнопок Только одна из кнопок может быть выбрана Методы add(AbstractButton) – добавить кнопку в группу remove(AbstractButton) – удалить кнопку из группы getButtonCount() – количество кнопок в группе

23Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Действия Действие – абстракция действия которое можно произвести Интерфейс Action Методы actionPerformed(ActionEvent) – совершить действие setEnabled(boolean) – запретить / разрешить isEnabled() – проверить разрешение putValue(key, value) – записать значение свойства getValue(key) – прочитать значение свойства

24Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Свойства действий Константы интерфейса Action NAME – название действия SHORT_DESCRIPTION –описание для всплывающих подсказок LONG_DESCRIPTION –описание для контекстной помощи ACTION_COMMAND_KEY – имя команды SMALL_ICON – иконка

25Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Применение действий По действию можно создавать элементы управления

26Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Пример действия Открытие директории для просмотра public class OpenAction extends AbstractAction { public OpenAction() { super("Open"); putValue(SHORT_DESCRIPTION, "Open a directory"); putValue(SMALL_ICON, loadIcon("load16.gif")); } public void actionPerformed(ActionEvent e) { // Open directory }

Управление с клавиатуры Часть 3

28Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Мнемоники Клавиши быстрого перехода Под Windows символ подчеркивается, используется комбинация Alt + Клавиша Методы AbstractButton.setMnemonics(key) – установить мнемонику для кнопки JLabel.setDisplayedMnemonicIndex(index) – установить номер символа, подсвечиваемого как мнемоника

29Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Горячие клавиши (акселераторы) Отображение клавиш на названия действий Класс InputMap Отображения названий действий на действия Класс ActionMap

30Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Отображение клавиш на названия (1) Каждая компонента имеет три InputMap WHEN_FOCUSED – применяется когда компонента имеет фокус WHEN_ANCESTOR_OF_FOCUSED_COMPONENT – применяется когда фокус имеет вложенная компонента WHEN_IN_FOCUSED_WINDOW – применяется когда фокус у компоненты в том же окне Методы JComponent getInputMap() – получить WHEN_FOCUSED getInputMap(int type) – получить по типу

31Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Отображение клавиш на названия (2) Методы InputMap put(KeyStroke, actionName) – установить отображение get(KeyStroke) – отобразить size() – размер отображения clear() – очистить отображение Свойства InputMap InputMap parent – родительский InputMap

32Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Отображение названий на действия Каждая компонента имеет ActionMap Получение ActionMap JComponent.getActionMap() Методы ActionMap put(actionName, Action) – установить отображение get(actionName) – отобразить size() – размер отображения clear() – очистить отображение

33Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Пример: горячие клавиши Привязка gotoTextAction к Alt+T frame.getRootPane().getInputMap( JComponent.WHEN_IN_FOCUSED_WINDOW ).put( KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.ALT_MASK), "gotoText" ); frame.getRootPane().getActionMap().put( "gotoText", gotoTextAction);

Управление фокусом Часть 4

35Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Получение информации о фокусе Событие FocusEvent Класс FocusEventListener Методы focusGained(FocusEvent) – фокус получен focusLost(FocusEvent) – фокус потерян

36Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Операции с фокусом Методы Component requestFocus() – попытаться сделать окно активным и получить фокус requestFocusInWindow() – получить фокус в окне isFocusOwner() – владеет ли фокусом

37Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Циклы фокусов Операции с фокусом next – следующий компонент в цикле previous – предыдущий компонент в цикле upCycle – выйти на цикл выше downCycle – войти на цикл ниже Метод isFocusCycleRoot() – является ли корнем цикла

38Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Управление фокусом Класс KeyboardFocusManager Методы focusNext(Previous)Component() – передача фокуса следующему (предыдущему) компоненту up(down)FocusCycle() – передача фокуса вверх (вниз) Получение getCurrentKeyboardFocusManager() – для текущего потока

39Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Глобальаня информация о фокусе Класс KeyboardFocusManager Методы getFocusOwner() – текущий владелец фокуса getPermanenFocusOwner() – постоянный владелец фокуса getFocusedWindow() – окно владеющее фокусом

40Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Перехват ввода с клавиатуры Класс KeyboardFocusManager Методы processKeyEvent(Component, KeyEvent) – обработать событие клавиатуры до компонента postProcessKeyEvent(Component, KeyEvent) – обработать событие клавиатуры после компонента

41Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Управление передачей фокуса Класс FocusTraversalPolicy Методы getFirst(Last)Component(Container root) – первая / последняя компонента getComponentAfter(Before)(Container root) – следующая (предыдущая) компонента getDefaultComponent(Container root) – компонента по умолчанию Свойства JComponent focusTraversalPolicy – метод передачи фокуса

42Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Способы передачи фокуса Классы ContainerOrderFocusTraversalPolicy – по порядку компонент в контейнере DefaultFocusTraversalPolicy – по порядку компонент в контейнере SortingFocusTraversalPolicy – сортирует компоненты компаратором LayoutFocusTraversalPolicy – сортирует компоненты по местоположению

43Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Проверка ввода Класс InputVerifier Методы boolean verify(JComponent) – проверить ввод Свойства JComponent inputVerifier – проверщик ввода

Look and Feel Часть 5

45Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Look and Feel Как приложение выглядит и реагирует на ввод пользователя Идентифицируется именем корневого класса Класс UIManager Методы setLookAndFeel(className) – установить L&F getSystemLookAndFeelClassName() – получить имя L&F по умолчанию getInstalledLookAndFeels() – массив загруженных L&F

46Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Пример: Смена L&F Установка Windows L&F try { UIManager.setLookAndFeel("com.sun.java" + ".swing.plaf.windows.WindowsLookAndFeel"); // Обновление L&F окна SwingUtilities.updateComponentTreeUI(this); } catch (Exception e) { System.err.println("Cannot set look and feel: " + e.getMessage()); }

47Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Установка L&F при запуске Установка Windows L&F java -Dswing.defaultlaf=com.sun.java.swing.plaf. windows.WindowsLookAndFeel …

Заключение Часть 6

49Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Ссылки Creating a GUI with JFC/Swing (Tutorial) // Java Foundation Classes // Swing Connection //

50 СПбГУ ИТМО Georgiy KorneevJava Advanced / Интерфейс пользователя 2 Вопросы