Технологии Java

Обработка событий

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

Содержание

События

  • Информация об изменении состояния
  • Корневой класс EventObject
  • Подклассы XXXEvent
  • Метод

Классификация событий

  • Низкоуровневые события
    • Создаются системой на основе действий пользователя
    • Инициатор события – текущая компонента
  • Высокоуровневые события
    • Создаются компонентами на основе других событий
    • Инициатор события – компонента, создавшая событие

Слушатели

  • Оповещаются о возникновении события
    • Интерфейсы XXXListener
  • Управление слушателями
    • addXXXListener(XXXListener listener) – добавить
    • removeXXXListener(XXXListener listener) – убрать

Обработка событий

  • Низкоуровневые события
  • Высокоуровневые события

Низкоуровневые события

  • Ввод пользователя
  • Изменение состояния компоненты
    • ComponentEvent – изменение видимости / размера / местоположения компонента
    • FocusEvent – изменение фокуса
    • ContainerEvent – добавление / удаление компонент
    • WindowEvent – операции с окнами

Обработка низкоуровн. событий

  • Генерация событий
    • Клавиатурные – для компоненты, владеющей фокусом
    • Мыши – для компоненты, над которой находится мышь
    • Прочие – для компоненты, с которой произошли
  • Событие ввода может быть поглощено

Высокоуровневые события

  • Примеры

Подтипы событий

Создание слушателей

  • Реализация слушателя
    • Реализовать интерфейс
    • Добавить слушателя к компоненту
    • Реагировать на события
  • Вспомогательные классы
    • XXXAdapter implements XXXListener – для реализации слушателей с несколькими методами

Пример слушателя

  • Проверка нажатия клавиши F1
    • public class F1EventListener extends KeyAdapter {
          public void keyTyped(KeyEvent e) {
              if (e.getKeyCode() == KeyEvent.VK_F1 &&
                       e.getModifiers() == 0) {
                  // Нажата клавиша F1
              }
          }
      }
      

Кнопки и действия

Содержание

Типы кнопок

Нажатие на кнопку

Базовый класс для кнопок (1)

Базовый класс кнопок (2)

Обыкновенные кнопки

Кнопки с флажком

Кнопки-переключатели

Группы кнопок

  • Класс ButtonGroup – набор кнопок
    • Только одна из кнопок может быть выбрана
  • Методы

Действия

Свойства действий

Применение действий

  • По действию можно создавать элементы управления

Пример действия

  • Открытие каталога для просмотра
    • 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
          }
      }
      

Мнемоники

  • Клавиши быстрого перехода
    • Символ подчеркивается, используется комбинация Alt + Клавиша
  • Методы

Горячие клавиши (акселераторы)

  • Отображение клавиш на названия действий
  • Отображения названий действий на действия

Отображение клавиш на названия

Отображение клавиш на названия

Состояние клавиши

Отображение названий на действия

Пример: горячие клавиши

  • Привязка 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);
      

Получение информации о фокусе

Операции с фокусом

Циклы фокусов

Управление фокусом

Глобальная информация о фокусе

Перехват ввода с клавиатуры

Управление передачей фокуса

Способы передачи фокуса

Проверка ввода

Look and Feel

Содержание

Look and Feel

Пример: Смена 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());
      }
      

Установка L&F при запуске

  • Установка Windows L&F
    java -Dswing.defaultlaf=com.sun.javax.swing.
        plaf.windows.WindowsLookAndFeel …
    

Заключение

Содержание

Ссылки

Вопросы