Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






 

Используется модель делегирования событий. Участвует 3 участника:

1. event source - источник

2. event object – событие

3. event listener - слушатель

 

Источник генерирует событие и направляет его слушателям. Слушатель ожидает событие и его обрабатывает.

 

Событие – объект. Суперкласс- java.util.EventOblect. Полезный метод- object.getSource(). Информирует об источнике события.

 

Для событий AWT(Swing): cобытия -объекты класса java.awt.AWTEvent.

В объекте события хранится:

- ссылка на объект-источник события;

- дополнительная информация (например, координаты мышки).

 

Источник – объект, который генерирует событие. Он отправляет его всем зарегистрированным слушателям.

Регистрация производится методом: addХxxListener (XxxListener el)

Xxx – тип события.

 

public void addActionListener () - для JButton

addKeyListener () – для клавиатуры

addMouseMotionListener () – для перемещения мыши

 

public void removeXxxListener(XxxListener el) – для отмены регистрации

 

Эти методы предоставляются источниками событий (т.е. источнтки должны иметь эти методы)

 

Слушатель событий:

1) должен быть зарегистрирован в объекте – источнике события.

2) должен реализовывать метод для обработки событий (обработчик). Т.е. реализовывать нужный интерфейс.

 

………implements ActionListener() {….

 

public actionPerformed (ActionEven ev){…..} ……….//Обработчик события

}

 

 

Все методы обработки вызываются из одного потока обработки событий (Т.е. по очереди). Поэтому, метод-обработчик. должен работать быстро, иначе не будет реакции на другие события. Для длительной операции нужно создавать отдельный поток.

Такая организация программ называется CallBack (обратный вызов). Реализован принцип Голливуда-«Не звоните нам, мы Вам сами перезвоним».(Регистрация обработчика-оставили № телефона.Он записался в объекте-источнике события. Произошло событие-объект-источник делает звонок по этому №).

 

Регистрация обработчиков.

 

 

Контейнер – обработчик события (самообработка событий), обработка классом-контейнером

import java.awt.*;

import java.awt.event.*;

import java.swing.*;

 

class MyNotebook extends JFrame implements ActionListener {

 

private JTextField tf; //одна строка

private JTextArea ta; // текстовое поле

 

public MyNotebook (String title) {//конструктор

super (title);

Container c = getContentPane ();

 

tf = new JTextField (“Введите текст “, 50);

c.add (tf, BorderLayout.NORTH);

 

ta = new JText Area ();

ta.setEditable (false);

c.add (ta);

 

JPanel p = new JPanel ();

JButton b = new JButton (“Перенести”);

JButton bс = new JButton (“Очистить”);

p.add (b);

p.add (bс);

 

c.add (p, Borderlayout.SOUTH);

 

b.add ActionListener (this); //регистрация

bс.add ActionListener (this);

tf.add ActionListener (this);

 

setSize (300, 200);

setVisible (true);

}

 

public void actionPerformed (ActionEvent al) {//обработчик событий

 

if(ae.getSource == bc)

ta.setText(“”);

 

else

ta.append (tf.getText() + “\n”);

 

//System.out.println (ae.getSource); //для отладки

}

 

public static void main (String [] args) {

JFrame f = new MyNotebook (“Обработка событий”);

f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

}

}

 

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

 

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.