Application do events java

Event Handling in Java Complete Tutorial

Event handling in Java is one of the important topic. It is asked in many java professional interviews and it is very necessary for developers to learn.

When state of an object is changed, it is known as an event in Java.

For example : button click , mouse hover etc.

In Java, there are several event classes present and there are several Listener interfaces available for event handling.

All these event classes and listeners are present in java.awt.event package.

Event Handling in Java

Event Handling is managed by below mentioned aspects :

Let’s learn each in detail :

Java Event classes and Listener interfaces

Below are the list of event classes and listener interface present in Java :

Event Class Listener Interface
MouseEvent MouseListener
MouseMotionListener
KeyEvent KeyListener
MouseWheelEvent MouseWheelListener
ActionEvent ActionListener
TextEvent TextListener
WindowEvent WindowListener
ContainerEvent ContainerListener
ComponentEvent ComponentListener
AdjustmentEvent AdjustmentListener
FocusEvent FocusListener
ItemEvent ItemListener

Components of Event Handling

There are three components in Event Handling , as mentioned below :

Events

As discussed earlier, Events are simply change in state of object in java.

Events Source

Event Source is that object which generates the event. Some Event Source examples are : button, text field etc.

Listeners

Listener listens to event. It is an object as well. Whenever an event occurs, listeners gets notified.

Process of Event Handling in Java

An event source generates the event. Event source send it to the registered listeners,

As listener receives the event, it process the event and then return it.

Steps to perform Event Handling

Below are the major steps in performing event handling :

Registration Methods

We need to register the component with the listener to perform event handling.

This can be done using registration methods provided by many classes :

Class name Method
Button public void addActionListener(ActionListener a)<>
TextField 1) public void addActionListener(ActionListener a)<>
2) public void addTextListener(TextListener a)<>
CheckBox public void addItemListener(ItemListener a)<>
List 1) public void addActionListener(ActionListener a)<>
2) public void addItemListener(ItemListener a)<>
MenuItem public void addActionListener(ActionListener a)<>
Choice public void addItemListener(ItemListener a)<>
TextArea public void addTextListener(TextListener a)<>

Java Event Handling Code

Event Handling code can be placed in below mentioned places :

Example : Event handling in Java by implementing ActionListener inside the class

package eventHandling; import java.awt.*; import java.awt.event.*; public class EventApp extends Frame implements ActionListener < TextField field; EventApp() < //creating components in the constructor field = new TextField(); field.setBounds(60, 50, 170, 20); Button button = new Button("submit"); button.setBounds(100, 120, 80, 30); //registering the listener //pass the current instance using 'this' button.addActionListener(this); //adding components //setting size, layout and visibility add(field); add(button); setSize(300, 300); setLayout(null); setVisible(true); >public void actionPerformed(ActionEvent e) < field.setText("You clicked the button"); >public static void main(String args[]) < new EventApp(); >>

event handling in java event handling in java

Example : Event handling in Java by implementing ActionListener outside the class

package eventHandling; import java.awt.*; import java.awt.event.*; class EventApp2 extends Frame < TextField field; EventApp2() < // creating components in the constructor field = new TextField(); field.setBounds(60, 50, 170, 20); Button button = new Button("click me"); button.setBounds(100, 120, 80, 30); //registering the listener // pass the current instance using 'this' MainClass main = new MainClass(this); button.addActionListener(main); //adding components //setting size, layout and visibility add(b); add(field); setSize(300, 300); setLayout(null); setVisible(true); >public static void main(String args[]) < new EventApp2(); >>
package eventHandling; import java.awt.event.*; class MainClass implements ActionListener < EventApp2 obj; MainClass(EventApp2 obj) < this.obj = obj; >public void actionPerformed(ActionEvent e) < obj.field.setText("You clicked the button"); >>

java example

Example : Event handling by implementing ActionListener in anonymous class

package eventHandling; import java.awt.*; import java.awt.event.*; public class EventApp3 extends Frame < TextField field; EventApp3() < field = new TextField(); field.setBounds(60, 50, 170, 20); Button button = new Button("click. "); button.setBounds(50, 120, 80, 30); button.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent e) < field.setText("Helloooo"); >>); add(button); add(field); setSize(300, 300); setLayout(null); setVisible(true); > public static void main(String args[]) < new EventApp3(); >>

Java event handling example

Further Readings:

Читайте также:  Deploying python applications windows

Conclusion

Event Handling in Java is very important mechanism.

It is the process of handling events in Java. Events are simply change of state of objects.

The management and listening of these events is known as Event Handling.

Newsletter Updates

Enter your name and email address below to subscribe to our newsletter

Newsletter

Recent Posts

  • How to Iterate over a List in Thymeleaf 17th March 2022
  • How to Loop through Map in Thymeleaf 16th March 2022
  • Complete Guide on using Thymeleaf with Spring Boot 25th February 2022
  • What is MapReduce in Hadoop? 29th January 2022
  • How to Export Data into Excel in Spring Boot Application 17th January 2022

Источник

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

Событие Event — это объект, описывающий изменение состояния источника, с которым оно связано. Примером события, в котором участвует пользователь, являются нажатие кнопки, выбор элемента из списка, ввод символа с клавиатуры и т.д. Событие может происходить и без участия пользователя при использовании таймера.

Слушатель Listener — это уведомляемый о некотором событии объект. Чтобы слушатель смог реагировать на определенное событие источника он должен быть им зарегистрирован, т.е. подключен к источнику. Listener должен реализовывать определенные методы для получения и обработки уведомлений о событии.

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

Читайте также:  Reading mail with java

После обработки события слушатель возвращает управление. Таким образом, для обработки события вызываются только те слушатели, которые на него «подписались», т.е. были зарегистрированы источником.

Типы событий и слушателей

В пакете java.awt.event определены интерфейсы слушателей для каждого из определенных в нем типов событий (например, для событий MouseEvent определено два интерфейса слушателей: MouseListener и MouseMotionListener). Все интерфейсы слушателей событий являются расширениями интерфейса java.util.EventListener. В этом интерфейсе не определяется ни один из методов, но он играет роль базового интерфейса, в котором однозначно определены все слушатели событий как таковые.Т.е. слушатель наследуется от интерфейса EventListener и предназначен для обработки определенного типа событий. При этом Listener содержит один или несколько методов, которые принимают объект события в качестве единственного параметра и вызываются в определенных ситуациях.

Интерфейс слушателя событий Listener может включать несколько методов. Например, класс событий, подобный MouseEvent, описывает несколько событий, связанных с мышью, таких как события нажатия и отпускания кнопки мыши. Эти события вызывают различные методы соответствующего слушателя.

В таблице приведены определенные в пакете java.awt.event типы событий, соответствующие им слушатели, а также методы, определенные в каждом интерфейсе слушателя.

Класс события Интерфейс слушателя Обработчики события
ActionEvent ActionListener actionPerformed(ActionEvent e)
AdjustmentEvent AdjustmentListener adjustmentValueChanged(AdjustmentEvent e)
ComponentEvent ComponentListener componentResized(ComponentEvent e)
componentMoved(ComponentEvent e)
componentShown(ComponentEvent e)
componentHidden(ComponentEvent e)
ContainerEvent ContainerListener componentAdded(ContainerEvent e)
componentRemoved(ContainerEvent e)
FocusEvent FocusListener focusGained(FocusEvent e)
focusLost(FocusEvent e)
ItemEvent ItemListener itemStateChanged(ItemEvent e)
KeyEvent KeyListener keyPressed(KeyEvent e)
keyReleased(KeyEvent e)
keyTyped(KeyEvent e)
MouseEvent MouseListener mouseClicked(MouseEvent e)
mousePressed(MouseEvent e)
mouseReleased(MouseEvent e)
mouseEntered(MouseEvent e)
mouseExited(MouseEvent e)
MouseMotionListener mouseDragged(MouseEvent e)
mouseMoved(MouseEvent e)
TextEvent TextListener textValueChanged(TextEvent e)
WindowEvent WindowListener windowOpened(WindowEvent e)
windowClosing(WindowEvent e)
windowClosed(WindowEvent e)
windowIconified(WindowEvent e)
windowDeiconified(WindowEvent e)
windowActivated(WindowEvent e)

Корнем иерархии классов событий является суперкласс EventObject из пакета java.util. Данный класс содержит два метода: getSource(), возвращающий источник событий, и toString(), возвращающий строчный эквивалент события. Чтобы узнать, в каком объекте произошло событие, нужно вызвать метод getSource(), возвращающий значение типа object. Следовательно, один и тот же слушатель можно подключить к разным источникам.

Классы-адаптеры, Adapter

Для каждого интерфейса слушателей событий, содержащего несколько методов, в пакете java.awt.event определен класс-адаптер Adapter. Когда нужен только один или два таких метода, иногда проще получить подкласс класса-адаптера, чем реализовать интерфейс самостоятельно. При использовании адаптера требуется лишь переопределить те методы, которые нужны, а при прямой реализации интерфейса необходимо определить все методы, в том числе и ненужные в данной программе.

Заранее определенные классы-адаптеры называются также, как и интерфейсы, которые они реализуют. Но в этих названиях Listener заменяется на Adapter; например MouseAdapter, MouseMotionAdapter, WindowAdapter и т.д.

Описание класса-адаптера действий с мышью, MouseAdapter

public abstract class MouseAdapter implements MouseListener < public void mouseClicked(MouseEvent e)<>public void mousePressed(MouseEvent e)<> public void mouseReleased(MouseEvent e)<> public void mouseEntered(MouseEvent e)<> public void mouseExited(MouseEvent e)<> > public abstract class MouseMotionAdapter implements MouseMotionListener < public void mouseDragged(MouseEvent e)<>public void mouseMoved(MouseEvent e)<> >

Классов-адаптеров всего семь. Кроме уже упомянутых трех классов, это классы ComponentAdapter, ContainerAdapter, FocusAdapter и KeyAdapter.

Читайте также:  Php как при перезагрузке post

События, связанные с визуальными компонентами AWT

В следующей таблице приведен список визуальных компонентов пакета AWT и событий, которые они порождают.

Компонент Событие Описание
Button ActionEvent Пользователь нажал кнопку
CheckBox ItemEvent Пользователь установил или сбросил флажок
CheckBoxMenuItem ItemEvent Пользователь установил или сбросил флажок рядом с пунктом меню
Choice ItemEvent Пользователь выбрал элемент списка или отменил его выбор
Component ComponentEvent Элемент либо перемещен, либо он стал скрытым, либо видимым
FocusEvent Элемент получил или потерял фокус ввода
KeyEvent Пользователь нажал или отпустил клавишу
MouseEvent Пользователь нажал или отпустил кнопку мыши, либо курсор мыши вошел или покинул область, занимаемую элементом, либо пользователь просто переместил мышь или переместил мышь при нажатой кнопке мыши
Container ContainerEvent Элемент добавлен в контейнер или удален из него
List ActionEvent Пользователь выполнил двойной щелчок мыши на элементе списка
ItemEvent Пользователь выбрал элемент списка или отменил выбор
MenuItem ActionEvent Пользователь выбрал пункт меню
Scrollbar AdjustmentEvent Пользователь осуществил прокрутку
TextComponent TextEvent Пользователь внес изменения в текст элемента
TextField ActionEvent Пользователь закончил редактирование текста элемента
Window WindowEvent Окно было открыто, закрыто, представлено в виде пиктограммы, восстановлено или требует восстановления

Регистрация слушателя Listener

Для регистрации слушателя источник использует специальные методы. Как правило, имена методов имеют форму addXxxListener(XxxListener listener) или setXxxListener(XxxListener listener), где Xxx — это имя события, а listener — ссылка на слушателя событий.

Пример использования слушателя ActionListener

package test; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class TestFrame extends JFrame < private static final long serialVersionUID = 1L; private JTextField textField; private JButton button1; private JButton button2; private JButton button3; public TestFrame() < super("Test frame"); createGUI(); >public void createGUI() < setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new FlowLayout()); button1 = new JButton("Button 1"); button1.setActionCommand("Button 1 was pressed!"); panel.add(button1); button2 = new JButton("Button 2"); button2.setActionCommand("Button 2 was pressed!"); panel.add(button2); button3 = new JButton("Button 3"); button3.setActionCommand("Button 3 was pressed!"); panel.add(button3); textField = new JTextField(); textField.setColumns(23); panel.add(textField); ActionListener actionListener = new TestActionListener(); button1.addActionListener(actionListener); button2.addActionListener(actionListener); button3.addActionListener(actionListener); getContentPane().add(panel); setPreferredSize(new Dimension(320, 100)); >public class TestActionListener implements ActionListener < public void actionPerformed(ActionEvent e) < textField.setText(e.getActionCommand()); >> public static void main(String[] args) < javax.swing.SwingUtilities.invokeLater(new Runnable() < public void run() < JFrame.setDefaultLookAndFeelDecorated(true); TestFrame frame = new TestFrame(); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); >>); > >

Интерфейс приложения представлен на рисунке.

Программный вызов события

Событие вызывается автоматически, при наступлении определенных условий. Но можно событие создать и вызвать программно (fire event).

В предыдущий пример были внесены изменения во внутренний класс TestActionListener, в результате чего по нажатию на кнопку button3 создается и вызывается новое событие.

public class TestActionListener implements ActionListener < public void actionPerformed(ActionEvent e) < JButton button = (JButton) e.getSource(); System.out.println (button.getText() + ", " + e.getActionCommand()); if (e.getSource() != button3) < textField.setText(e.getActionCommand()); >else < ActionEvent e1 = new ActionEvent(button2, Event.MOUSE_DOWN, "Button 2 was pressed programmatically!"); ActionListener[] listeners; listeners = button2.getActionListeners(); listeners[0].actionPerformed(e1); >> >

После нажатия на кнопку button3 в консоли будет выведена следующая информация :

Button 3, Button 3 was pressed! Button 2, Button 2 was pressed programmatically!

Источник

Оцените статью