- •Лабораторная работа №5 Обработка событий в Swing
- •Теоретические сведения
- •Паттерн проектирования «наблюдатель»
- •Механизм обработки событий библиотеки Swing
- •Интерфейс MouseListener и обработка событий от мыши
- •Создание слушателей с помощью анонимных классов
- •Класс MouseAdapter
- •Общая структура слушателей
- •Слушатель колесика мышки MouseWheelListener
- •Слушатель клавиатуры KeyListener
- •Слушатель изменения состояния ChangeListener
- •Слушатель событий окна WindowListener
- •Слушатель фокуса FocusListener
- •Слушатель событий компонента СomponentListener
- •Слушатель выбора элемента ItemListener
- •Универсальный слушатель ActionListener
- •Работа с меню в библиотеке Swing
- •Создание главного меню
- •Обработка команд меню
- •Создание контекстного меню
- •Интерфейс Action (действие) и класс AbstractAction
- •Стандартные диалоговые окна Класс jOptionPane
- •Класс jFileChooser
- •Ход работы:
- •Контрольные вопросы:
Слушатель событий компонента СomponentListener
Слушатель ComponentListener оповещается, когда наблюдаемый визуальный компонент изменяет свое положение, размеры или видимость. В интерфейсе четыре метода:
public void componentMoved(ComponentEvent event) – вызывается, когда наблюдаемый компонент перемещается (в результате вызова команды setLocation(), работы менеджера размещения или еще по какой-то причине).
public void componentResized(ComponentEvent event) – вызывается, когда изменяются размеры наблюдаемого компонента.
public void componentHidden(ComponentEvent event) – вызывается, когда компонент становится невидимым.
public void componentShown(ComponentEvent event) – вызывается, когда компонент становится видимым.
Слушатель выбора элемента ItemListener
Слушатель ItemListener реагирует на изменение состояния одного из элементов, входящих в состав наблюдаемого компонента. Например, выпадающий список JComboBox состоит из множества элементов и слушатель реагирует, когда изменяется выбранный элемент. Также данный слушатель оповещается при выборе либо отмене выбора флажка JCheckBox или переключателя JRadioButton, изменении состояния кнопки JToggleButton и т. д. Слушатель обладает одним методом:
public void itemStateChanged(ItemEvent event).
Универсальный слушатель ActionListener
Среди многочисленных событий, на которые реагирует каждый элемент управления (и о которых он оповещает соответствующих слушателей, если они к нему присоединены), есть одно основное, вытекающее из самой сути компонента и обрабатываемое значительно чаще, чем другие. Например, для кнопки это щелчок на ней, а для выпадающего списка – выбор нового элемента.
Для отслеживания и обработки такого события может быть использован особый слушатель ActionListener, имеющий один метод:
public void actionPerformed(ActionEvent event).
У использования ActionListener есть небольшое преимущество в эффективности (так, при обработке нажатия на кнопку не надо реагировать на четыре лишних события – ведь даже если методы-обработчики пустые, на вызов этих методов все равно тратятся ресурсы). А кроме того очень удобно запомнить и постоянно использовать один класс с одним методам и обращаться к остальным лишь в тех относительно редких случаях, когда возникнет такая необходимость.
Обработка нажатия на кнопку ok в нашем примере легко переписывается для ActionListener:
ok.addMouseListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (loginField.getText().equals("Иван")) JOptionPane.showMessageDialog(null, "Вход выполнен");
else JOptionPane.showMessageDialog(null, "Вход НЕ выполнен");
}
}
);
Работа с меню в библиотеке Swing
Неотъемлемой частью современных оконных программ является меню, представляющее собой удобно сгруппированный набор команд. Меню бывает двух типов: главное и контекстное. Главное меню располагается вдоль верхней границы окна и содержит команды, относящиеся ко всему приложению (точнее, все команды, которые можно выполнить, работая с данным окном). Контекстное меню вызывается нажатием правой кнопки мышки на конкретном объекте и содержит команды, которые могут быть применены именно к этому объекту.
