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

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

Upload: tavia

Post on 09-Jan-2016

88 views

Category:

Documents


1 download

DESCRIPTION

Обработка событий. Событие – объект специального класса, описывающий изменение состояния объекта источника. Классы для обработки событий находятся в пакете java.awt.event. Обработка событий. Классы событий. EventObject. ActionEvent. ContainerEvent. AWTEvent. AdjustmentEvent. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Обработка событий

1

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

Событие – объект специального класса,

описывающий изменение состояния

объекта источника.

Классы для обработки событий

находятся в пакете java.awt.event

Page 2: Обработка событий

2

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

Классы событий

EventObject

AWTEvent

ActionEvent

AdjustmentEvent

ComponentEvent

ItemEvent

TextEvent

ContainerEvent

FocusEvent

InputEvent

PaintEvent

WindowEvent

KeyEvent

MouseEvent

Page 3: Обработка событий

3

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

Классы событий

Методы класса EventObject:

- Object getSource() – ссылка на объект-источник события

- String toString() – текстовое описание события

Page 4: Обработка событий

4

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

Источники событий

Источник Событие Когда возникает

JButton ActionEvent Нажата кнопка

JCheckBox ItemEvent Сброс/установка флажка

JRadioButton ItemEvent Сброс/установка флажка

JComboBox ActionEvent

ItemEvent

Выбор элемента списка

Изменение состояния элемента

JList ListSelectionEvent

Изменение состояния элемента

JMenuItem ActionEvent

ItemEvent

Изменилось сост-е пункта меню

То же для пункта с меткой

Page 5: Обработка событий

5

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

Источники событий

Источник Событие Когда возникает

JScrollbar AdjustmentEvent Манипуляции с полосами прокрутки

JTextField

JTextArea

TextEvent Ввод символов

JFrame

JWindow

Jdialog

WindowEvent Любые действия с окном (открыть/закрыть, свернуть/развернуть и т.п.)

Все органы управления

FocusEvent Компонент получает или теряет фокус ввода

Все контейнеры

ContainerEvent Компонент добавляется или удаляется из контейнера

Page 6: Обработка событий

6

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

Уровни событий

Высокоуровневые: все вышеперечисленные.

Низкоуровневые: KeyEvent, MouseEvent,

MouseEvent (move) - low

MouseEvent (click) – low

ActionEvent - high

Page 7: Обработка событий

7

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

Интерфейсы - слушатели

Для каждого типа событий существует свой интерфейс-

слушатель:

ActionEvent – ActionListener

ItemEvent – ItemListener

WindowEvent – WindowListener

и т.д. …

В интерфейсе-слушателе описаны методы,

обрабатывающие события данного класса.

Page 8: Обработка событий

8

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

Блоки прослушивания

Блок прослушивания – класс, реализующий

интерфейс-слушатель (реализующий все его

методы).

Для обработки события необходимо:

1. Создать блок прослушивания

2. Связать блок прослушивания с источником события

Page 9: Обработка событий

9

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

Блоки прослушивания

Чтобы связаться с блоком прослушивания, классы-источники

события должны получить ссылку на экземпляр блока

прослушивания (класса-обработчика события) –

зарегистрировать блок прослушивания:

public void addTypeListener(TypeListener obj)

где Type – это имя события,

obj – ссылка на экземпляр класса-обработчика события.

Методы, которые регистрируют блок прослушивания,

обеспечиваются генерирующим событие источником.

Page 10: Обработка событий

10

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

Блоки прослушивания: унивещание

Источник

события

Интерфейс-

слушатель

Блок

прослушивания

implements

addTypeListener(TypeListener obj)

Page 11: Обработка событий

11

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

Источник

события

Блок

прослушивания 1

addTypeListener(TypeListener obj)

Блоки прослушивания: мультивещание

Блок

прослушивания 2

Блок

прослушивания 3

addTypeListener(TypeListener obj)

Page 12: Обработка событий

12

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

Источник

события

Блоки прослушивания: несколько источников

Блок

прослушивания

addTypeListener(TypeListener obj)

Источник

события

Источник

события addTypeListener(TypeListener obj)

Page 13: Обработка событий

13

Обработка событийС помощью отдельного класса

class TextMove implements ActionListener

{

private JTextField jtf;

TextMove(JTextField jtf)

{ this.jtf = jtf; }

public void actionPerformed(ActionEvent obj)

{ jtf.setText("Button pressed"); }

}

Page 14: Обработка событий

14

Обработка событийС помощью отдельного класса

class MyNotebook extends JFrame

{public static void main(String args[ ])

{JFrame jf = new JFrame(“Обработка события ActionEvent");

Container cp = jf.getContentPane();

jf.setLayout(new FlowLayout());

JButton jb = new JButton("OK"); JTextField jtf = new JTextField(20);

cp.add(jb);cp.add(jtf);

jb.addActionListener(new TextMove(jtf));

jf.setVisible(true); }

}

Page 15: Обработка событий

15

Обработка событийС помощью отдельного класса

Page 16: Обработка событий

16

Обработка событийВнутри класса-источника

class MyNotebook extends JFrame implements ActionListener

{private JTextField jtf;

public static void main(String args[ ])

{JFrame jf = new JFrame(“Обработка события ActionEvent");

Container cp = jf.getContentPane();

jf.setLayout(new FlowLayout());

JButton jb = new JButton("OK");

JTextField jtf = new JTextField(20);

Page 17: Обработка событий

17

Обработка событийВнутри класса-источника

cp.add(jb);

cp.add(jtf);

jb.addActionListener(this);

jf.setVisible(true);

}

public void actionPerformed(ActionEvent obj)

{

jtf.setText("Button pressed");

}

}

Page 18: Обработка событий

18

Обработка событийС помощью вложенного класса

class MyNotebook extends JFrame

{private JTextField jtf;

public static void main(String args[ ])

{JFrame jf = new JFrame(“Обработка события ActionEvent");

Container cp = jf.getContentPane();

jf.setLayout(new FlowLayout());

JButton jb = new JButton("OK");

JTextField jtf = new JTextField(20);

Page 19: Обработка событий

19

Обработка событийС помощью вложенного класса

cp.add(jb);

cp.add(jtf);

jb.addActionListener(new TextMove());

jf.setVisible(true);

}

class TextMove implements ActionListener

{public void actionPerformed(ActionEvent obj)

{ jtf.setText("Button pressed"); }

}

Page 20: Обработка событий

20

Обработка событийС помощью анонимного

вложенного класса

jb.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent obj)

{ jtf.setText("Button pressed"); }

} );

Page 21: Обработка событий

21

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

Методы интерфейса ActionListener

void actionPerformed(ActionEvent obj)

Методы интерфейса AdjustmentListener

void adjustmentValueChanged(AdjustmentEvent obj)

Page 22: Обработка событий

22

Обработка событийМетоды интерфейса ComponentListener

void ComponentResized(ComponentEvent obj)

void ComponentMoved(ComponentEvent obj)

void ComponentShown(ComponentEvent obj)

void ComponentHidden(ComponentEvent obj)

Методы интерфейса ContainerListener

void componentAdded(ContainerEvent obj)

void componentRemoved(ContainerEvent obj)

Page 23: Обработка событий

23

Обработка событийМетоды интерфейса FocusListener

void focusGained(FocusEvent obj)

void focusLost(FocusEvent obj)

Методы интерфейса ItemListener

void ItemStateChanged(ItemEvent obj)

Методы интерфейса KeyListener

public void keyTyped(KeyEvent obj);

public void keyPressed(KeyEvent obj);

public void keyReleased(KeyEvent obj);

Page 24: Обработка событий

24

Обработка событийМетоды интерфейса MouseListener

public void mouseClicked(MouseEvent obj);

public void mousePressed(MouseEvent obj);

public void mouseReleased(MouseEvent obj);

public void mouseEntered(MouseEvent obj);

public void mouseExited(MouseEvent obj);

Методы интерфейса MouseMotionListener

public void mouseDragged(MouseEvent obj);

public void mouseMoved(MouseEvent obj);

Page 25: Обработка событий

25

Обработка событийМетоды интерфейса TextListener

void textValueChanged(TextEvent obj)

Методы интерфейса WindowListener

public void windowOpened(WindowEvent obj);

public void windowClosed(WindowEvent obj);

public void windowClosing(WindowEvent obj);

public void windowActivated(WindowEvent obj);

public void windowDeactivated(WindowEvent obj);

public void windowIconified(WindowEvent obj);

public void windowDeiconified(WindowEvent obj);

Page 26: Обработка событий

26

Обработка событийКлассы-адаптеры

Для реализации интерфейса-слушателя необходимо определить

все его методы. Если необходимо обрабатывать в программе

только некоторые из событий, обработка которых

предусматривается конкретным интерфейсом-слушателем, а все

прочие игнорировать, то можно воспользоваться специальным

классами, которые называются классами-адаптерами. Классы-

адаптеры обеспечивают пустую реализацию всех методов

интерфейса, что дает возможность наследовать класс-

обработчик события от класса-адаптера и реализовывать в нем

не все методы интерфейса, а лишь те которые необходимы.

Page 27: Обработка событий

27

Обработка событийКлассы-адаптеры

Список классов-адаптеров:- ComponentAdapter- ContainerAdapter - FocusAdapter- KeyAdapter- MouseAdapter- MouseMotionAdapter- WindowAdapter