Java – язык программирования, который популярен у современных разработчиков. На Джаве создают как небольшие программы, так и крупные проекты. Пример – Minecraft.

Чтобы хорошо разбираться в программировании, необходимо знать классы, методы, а также способы их применения. Немаловажный момент – это события. Именно о них зайдет речь далее. Информация пригодится как новичкам, так и опытным разработчикам.

Описание событий

В Google можно отыскать немало полезной информации о том, как пользоваться Java. События и слушатели здесь играют далеко не последнюю роль. Особенно это касается программного обеспечения для бизнеса и разнообразных структур. При разработке игр они тоже применяются весьма успешно.

Event Java – это объект, описывающий корректировку состояния источника, с которым связан ивент. Наглядные примеры:

  • нажатие на кнопку;
  • выбор элемента из предложенного списка;
  • ввод символов при помощи клавиатуры.

События могут осуществляться как через таймер, так и посредством таймеров.

Описание слушателей

Изучая рассматриваемую тему по Google, можно заметить еще один элемент – это Listener. Слушатель – уведомляемый о том или ином событии объект. Для того, чтобы Listeners могли реагировать на Java Events, требуется провести его предварительную регистрацию. Так называется процедура подключения слушателя к источнику.

Listener должен отвечать за реализацию разного рода методов для получения и обработки уведомлений о событиях. Также необходимо запомнить, что:

  • по данным Google, слушатель находится в постоянном ожидании, пока в источнике не произойдет заданное ранее событие;
  • рассматриваемый элемент получает объект события, чтобы правильно выдавать реакцию;
  • источник будет вызывать метод-обработчик ивента, определенный в классе, являющемся блоков прослушки;
  • в виде блоков прослушивания можно задействовать внутренние классы.

Когда ивент обработался, слушатель осуществляет возврат управления. Это помогает вызывать лишь те listeners, которые «подписались» на java event.

Разновидности слушателей и событий

Google поможет понять, как правильно создавать ПО на Джаве. Там же находится ключевая информация о событиях и слушателях Java. Пакет java.awt.event обладает определением интерфейсов слушателей для каждого из определенного в нем типов ивентов.

Все listener’s interfaces — это расширения интерфейса java.util.EventListener. В нем не происходит определение методов, но он выступает в качестве «базы». В нем указываются все слушатели событий как таковые. Они будут наследоваться от интерфейса EventListener, а также предназначаться для обработки конкретного типа ивентов.

Listener, согласно данным Google, способен содержать один или несколько методов, принимающих объект event в виде единственного параметра. Вызываются в определенных случаях.

Интерфейс слушателя событий Listener может предусматривать несколько методов. Пример – класс ивентов, подобный MouseEvent, описывает несколько операций, которые связаны с мышью. Сюда относят нажатие и отпускания ПКМ и ЛКМ. Для соответствующего слушателя будут вызываться отдельные методы.

События в Java

Табличка, представленная выше – это типы событий, которые определены в java.awt.event. Здесь же указаны соответствующие им слушатели и методы, определенные в каждом из interfaces.

В качестве корня иерархического типа, как говорит Google, выступает суперкласс EventObject из пакета java.util. Этот класс предусматривает несколько методов:

  • getSouce() – возврат источника ивента;
  • toString() – возврат строчного эквивалента event.

Чтобы понять, в каком объекте произошел ивент, необходимо прибегнуть к первому варианту, который вернут значение типа object.

Адаптеры

В Java есть классы-адаптеры. Они, согласно Google, помогают, когда у листенера несколько methods, но просмотреть необходимо один или два из них. Adapters гораздо проще реализовать, чем весь interface в Java.

При применении адаптера возникает необходимость в определении желаемых methods. Если задействована прямая реализация interfaces в Java, то, по Google, требуется определение всех методов. Даже тех, что в соответствующем блоке кодификации не нужны.

Пример класса-адаптера действий с мышью:

События в Java

Google указывает, что адаптеров всего 7 штук. Кроме уже использованных трех есть еще и:

  • ComponentAdapter;
  • FocusAdapter;
  • KeyAdapter.

Все это пригодится каждому разработчику в процессе коддинга.

Ивенты и визуальные элементы AWT

События в Java

А вот таблица, которая продемонстрирует перечень визуальных элементов пакета AWT, а также ивентов, которые они порождают. Соответствующий список удастся с легкостью обнаружить в Google.

Листенер – как зарегистрировать

Keyevent – один из ключевых вариантов ивентов в Java. Перед рассмотрением соответствующего примера стоит выяснить, как зарегистрировать листенер. Для этого применяются специальные methods. Их имена имеют форму: addXXXListener(XXXListenet listener) или setXXXListener(XXXListener listener), шде XXX – это имя ивента, а listener – ссылка на слушателя.

Вот код:

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);
             }
        });
     }
}

Интерфейс будет таким:

События в Java

В Google полно подобных примеров.

Программный вызов

Еще один момент, достойный внимания перед изучением примера keyevent в Java, который можно рассмотреть при помощи Google – это вызов ивента через программу. На основании предыдущей кодификации можно внести следующие корректировки:

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!");
            Action Listener[] listeners;
            listeners = button2.getActionListeners();
            listeners[0].actionPerformed(e1);
        }
    }
}

После того, как клиент нажмет на button3, в консоли появится такая картинка:

События в Java

Пример KeyEvent

В Google полно examples применения KeyEvent. Описание соответствующих компонентов и методов уже было рассмотрено. Теперь стоит изучить наглядные коды. Каждый example будет отвечать за определенные операции:

  • В Google удастся обнаружить короткие нажатия.
События в Java
  • Одновременные нажатия, при которых необходимо прописывать каждую отслеживаемую клавишу.
События в Java

Через Google удастся отыскать и некоторые видеоуроки. Вот один из них. А на специализированных компьютерных курсах даже новичков научат быстро работать с ивентами и листенерами.

События в Java