Приложение 5. Обработка событий.
Java 2 использует хорошо структурированную, функционально полную и очень логичную модель обработки событий, впервые реализованную в JDK 1.1. Иерархия классов событий имеет вид:
· Object
· EventObject
· AWTEvent
· ActionEvent
· AdjustmentEvent
· ItemEvent
· TextEvent
· ComponentEvent
· ContainerEvent
· FocusEvent
· WindowEvent
· PaintEvent
· InputEvent
· KeyEvent
· MouseEvent
Классы и интерфейсы для работы с делегированными событиями расположены в пакете java.awt.event (см. рисунок 5).
В классах событий существуют открытые методы:
Класс
| Метод
| Возвращаемые данные
|
EventObject
| Object getSource()
| объект, вызвавший события
|
| String toString()
| строка, описывающая событие
|
AWTEvent
| int getID()
| идентификатор типа события
|
| String paramString()
| строка параметров события
|
ActionEvent
| int getModifiers()
| состояние клавиш-модификаторов
|
| String getActionCommand()
| название действия
|
AdjustmеntEvent
| int getValue()
| текущее значение, полученное из прокрутки
|
| int getAdjustmentType()
| тип установки прокрутки, изменившей значения
|
| Adjustable getAdjustable()
| ссылка на объект прокрутки, установивший значение
|
ItemEvent
| Object getItem()
| пункт списка, измененный данным событием
|
| Container getContainer()
| объект, вызвавший данное событие
|
FocusEvent
| boolean isTemporary()
| истину, если фокус ввода данного объекта возобновляется самостоятельно
|
PaintEvent
| Graphics getGraphics()
| графический контекст для данного события
|
WindowEvent
| Window getWindow()
| ссылка на окно, которое вызвало данное событие
|
InputEvent
| boolean isShiftDown()
| истина, если нажата клавиша Shift
|
| boolean isControlDown()
| истина, если нажата клавиша Control
|
| boolean isMetaDown()
| истина, если нажата клавиша Meta
|
| boolean isAltDown()
| истина, если нажата клавиша Alt
|
| int getWhen()
| время в миллисекундах с того времени, как произошло данное событие
|
| int getModifiers()
| состояние всех модификаторов клавиатуры
|
| boolean isConsumed()
| истина, если событие обработано
|
KeyEvent
| int getKeyCode()
| код клавиши, вызвавшей событие
|
| char getKeyChar()
| символ клавиши, вызвавшей событие
|
| boolean isActionKey()
| истина, если клавиша, вызвавшая событие, является функциональной клавишей
|
MouseEvent
| int getX()
| текущая абсцисса указателя мыши при генерации данного события
|
| int getY()
| текущая ордината указателя мыши при генерации данного события
|
| Point getPoint()
| положение указателя мыши при генерации данного события
|
| getClickCount()
| число нажатий на кнопку мыши при генерации данного события
|
| isPopupTrigger()
| истина, если данное событие связано с переключателем всплывающего меню для текущей операционной платформы
|
Классы, ответственные за обработку событий в JDK 1.1, реализуют интерфейсы “прослушивания” событий (listeners):
Интерфейс
| Переопределяемые методы
| Описание
|
ActionListener
| actionPerformed
(ActionEvent e)
| произведено некоторое действие
|
AdjustmentListener
| adjustementValueChanged (AdjustmentEvent)
| изменилось значение в линии прокрутки
|
ComponentListener
| componentResized (ComponentEvent e)
| компонент изменил размер
|
| componentMoved (ComponentEvent e)
| компонент изменил расположение
|
| componentShown
(ComponentEvent e)
| компонент отображен
|
| componentHidden (ComponentEvent e)
| компонент спрятан
|
ContainerListener
| componentAdded
(ContainerEvent e)
| компонент добавлен в контейнер
|
| componentRemoved (ContainerEvent e)
| компонент убран из контейнера
|
FocusListener
| focusGained(FocusEvent e)
| компонент получил фокус ввода
|
| focusLost (FocusEvent e)
| компонент потерял фокус ввода
|
ItemListener
| ItemStateChaged (ItemEvent e)
| изменился выделенный пункт выбора
|
KeyListener
| keyTyped(KeyEvent e)
| напечатан символ
|
| keyPressed(KeyEvent e)
| нажата клавиша
|
| keyReleased(KeyEvent e)
| нажатая клавиша отпущена
|
MouseListener
| mouseClicked(MouseEvent e)
| нажата и отпущена кнопка мыши
|
| mousePressed(MouseEvent e)
| нажата кнопка мыши
|
| mouseReleased(MouseEvent e)
| отпущена нажатая кнопка мыши
|
| mouseEntered(MouseEvent e)
| указатель мыши вошел в область компонента
|
| mouseExited(MouseEvent e)
| указатель мыши вышел из области компонента
|
MouseMotionListener
| mouseDragged(MouseEvent e)
| перемещен указатель мыши при нажатой кнопке мыши
|
| mouseMoved(MouseEvent e)
| перемещен указатель мыши при не нажатой кнопке мыши
|
TextListener
| textValueChanged(TextEvent e)
| текстовое значение изменилось
|
WindowListener
| windowOpened(WindowEvent e)
| окно открыто
|
| windowClosing(WindowEvent e)
| окно закрывается
|
| windowClosed(WindowEvent e)
| окно закрыто
|
| windowIconified(WindowEvent e)
| окно минимизировано
|
| windowDeiconified (WindowEvent e)
| окно восстановило размеры после минимизации
|
| windowActivated (WindowEvent e)
| окно активировано (является окном ввода информации)
|
| windowDeactivated (WindowEvent e)
| окно перестало быть активным окном
|
Некоторым интерфейсам событий соответствуют открытые абстрактные классы-адаптеры, содержащие пустые методы для обработки событий:
Интерфейс
| Класс
|
ComponentListener
| ComponentAdapter
|
ContainerListener
| ContainerAdapter
|
FocusListener
| FocusAdapter
|
KeyListener
| KeyAdapter
|
MouseListener
| MouseAdapter
|
MouseMotionListener
| MouseMotionAdapter
|
MouseInputListener
| MouseInputAdapter
|
WindowListener
| WindowAdapted
|
К действиям относятся события, поступающие от компонентов:
Компонент
| Генерируемое событие
|
Button
| нажатие на кнопку мыши
|
MenuItem
| нажатие на кнопку мыши
|
List
| нажатие на кнопку мыши
|
| нажатие на клавишу возврата каретки
|
TextField
| нажатие на клавишу возврата каретки
|
Управляющие компоненты регистрируют “прослушивание” событий при помощи методов вида:
void add ТипКомпонента Listener(объектРеализующийПрослушивание)
и освобождаются от “прослушивания” событий при помощи соответствующих методов вида:
void remove ТипКомпонента Listener(объектРеализующийПрослушивание)
Класс
| Метод для добавления “слушателя” события
|
Componenet
| addComponentListener(ComponenetListener l) addFocusListener(FocusListener l) addKeyListener(KeyListener) addMouseListener(MouseListener l) addMouseMotionListener(MouseMotionListener l)
|
Container
| addContainerListener(ContainerListener l)
|
Button
| addActionListener(ActionListener l)
|
Checkbox
| addItemListener(ItemListener l)
|
CheckboxMenuItem
| addItemListener(ItemListener l)
|
Choice
| addItemListener(ItemListener l)
|
List
| addItemListener(ItemListener l) addActionListener(ActionListener l)
|
MenuItem
| addActionListener(ActionListener l)
|
Scrollbar
| addAdjustnmentListener(AdjustmentListener l)
|
TextComponent
| addTextListener(TextListener l)
|
TextArea
| addActionListener(ActionListener l)
|
Window
| addWindowListener(WindowListener l)
|
Приведем пример приложения, обрабатывающего событие ActionEvent
Пример работы с событием действия (ActionEvent)
import java.awt.*;
import java.awt.event.*;
public class FrameActionEvent extends Frame implements ActionListener{
Label l = new Label(); // Создадим метку для вывода сообщения
Button b = new Button("OK"); // Создадим кнопку, генерирующую сообщение
public void FrameActionEvent()
{
setLayout(null); // Установим абсолютное размещение компонентов
setBackground(Color.lightGray); // Установим светло-серый фон
// Установим границы управляющих компонентов
l.setBounds(20, 10, 40, 20); // метки
b.setBounds(20, 40, 40, 20); // кнопки
// Зарегистрируем для кнопки “прослушивание” событий
b.addActionListener(this);
// Добавим в окно
add(l); // метку
add(b); // кнопку
}
// Реализуем обработку события действия
public void actionPerformed(ActionEvent e)
{
l.setText("I'm OK!");
}
}
Читайте также:
Воспользуйтесь поиском по сайту: