Учебники

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

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

Типы событий

События могут быть в целом классифицированы на две категории:

  • События на переднем плане — те события, которые требуют непосредственного взаимодействия с пользователем. Они генерируются как последствия взаимодействия человека с графическими компонентами в графическом интерфейсе пользователя. Например, нажатие кнопки, перемещение мыши, ввод символа с клавиатуры, выбор элемента из списка, прокрутка страницы и т. Д.

  • Фоновые события — те события, которые требуют взаимодействия конечного пользователя, называются фоновыми событиями. Прерывания операционной системы, аппаратный или программный сбой, истечение таймера, завершение операции — пример фоновых событий.

События на переднем плане — те события, которые требуют непосредственного взаимодействия с пользователем. Они генерируются как последствия взаимодействия человека с графическими компонентами в графическом интерфейсе пользователя. Например, нажатие кнопки, перемещение мыши, ввод символа с клавиатуры, выбор элемента из списка, прокрутка страницы и т. Д.

Фоновые события — те события, которые требуют взаимодействия конечного пользователя, называются фоновыми событиями. Прерывания операционной системы, аппаратный или программный сбой, истечение таймера, завершение операции — пример фоновых событий.

Что такое обработка событий?

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

Модель делегирования событий включает в себя следующих ключевых участников, а именно:

  • Источник — Источник — это объект, на котором происходит событие. Источник отвечает за предоставление информации о произошедшем событии своему обработчику. Java предоставляют как с классами для исходного объекта.

  • Слушатель. Он также известен как обработчик события. Слушатель отвечает за генерацию ответа на событие. С точки зрения реализации Java слушатель также является объектом. Слушатель ждет, пока не получит событие. Как только событие получено, слушатель обрабатывает событие и затем возвращается.

Источник — Источник — это объект, на котором происходит событие. Источник отвечает за предоставление информации о произошедшем событии своему обработчику. Java предоставляют как с классами для исходного объекта.

Слушатель. Он также известен как обработчик события. Слушатель отвечает за генерацию ответа на событие. С точки зрения реализации Java слушатель также является объектом. Слушатель ждет, пока не получит событие. Как только событие получено, слушатель обрабатывает событие и затем возвращается.

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

Шаги, связанные с обработкой событий

  • Пользователь нажимает кнопку, и событие генерируется.

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

  • Объект события перенаправляется в метод зарегистрированного класса слушателя.

  • метод теперь выполняется и возвращается.

Пользователь нажимает кнопку, и событие генерируется.

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

Объект события перенаправляется в метод зарегистрированного класса слушателя.

метод теперь выполняется и возвращается.

Что нужно помнить о слушателе

  • Чтобы спроектировать класс слушателя, мы должны разработать несколько интерфейсов слушателя. Эти интерфейсы слушателя предсказывают некоторые публичные абстрактные методы обратного вызова, которые должны быть реализованы классом слушателя.

  • Если вы не реализуете предопределенные интерфейсы any if, тогда ваш класс не может выступать в качестве класса слушателя для исходного объекта.

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

Если вы не реализуете предопределенные интерфейсы any if, тогда ваш класс не может выступать в качестве класса слушателя для исходного объекта.

Методы обратного вызова

Это методы, предоставляемые провайдером API и определяемые программистом приложения и вызываемые разработчиком приложения. Здесь методы обратного вызова представляют метод события. В ответ на событие java jre запустит метод обратного вызова. Все такие методы обратного вызова предоставляются в интерфейсах слушателей.

Если компонент хочет, чтобы какой-то слушатель прослушивал его события, источник должен зарегистрировать себя для слушателя.

Пример обработки событий

Создайте следующую Java-программу, используя любой редактор по вашему выбору, скажем, D: /> AWT> com> tutorialspoint> gui>

AwtControlDemo.java

package com.tutorialspoint.gui;

import java.awt.*;
import java.awt.event.*;

public class AwtControlDemo {

   private Frame mainFrame;
   private Label headerLabel;
   private Label statusLabel;
   private Panel controlPanel;

   public AwtControlDemo(){
      prepareGUI();
   }

   public static void main(String[] args){
      AwtControlDemo  awtControlDemo = new AwtControlDemo();
      awtControlDemo.showEventDemo();
   }

   private void prepareGUI(){
      mainFrame = new Frame("Java AWT Examples");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));
      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      });    
      headerLabel = new Label();
      headerLabel.setAlignment(Label.CENTER);
      statusLabel = new Label();        
      statusLabel.setAlignment(Label.CENTER);
      statusLabel.setSize(350,100);

      controlPanel = new Panel();
      controlPanel.setLayout(new FlowLayout());

      mainFrame.add(headerLabel);
      mainFrame.add(controlPanel);
      mainFrame.add(statusLabel);
      mainFrame.setVisible(true);  
   }

   private void showEventDemo(){
      headerLabel.setText("Control in action: Button"); 

      Button okButton = new Button("OK");
      Button submitButton = new Button("Submit");
      Button cancelButton = new Button("Cancel");

      okButton.setActionCommand("OK");
      submitButton.setActionCommand("Submit");
      cancelButton.setActionCommand("Cancel");

      okButton.addActionListener(new ButtonClickListener()); 
      submitButton.addActionListener(new ButtonClickListener()); 
      cancelButton.addActionListener(new ButtonClickListener()); 

      controlPanel.add(okButton);
      controlPanel.add(submitButton);
      controlPanel.add(cancelButton);       

      mainFrame.setVisible(true);  
   }

   private class ButtonClickListener implements ActionListener{
      public void actionPerformed(ActionEvent e) {
         String command = e.getActionCommand();  
         if( command.equals( "OK" ))  {
            statusLabel.setText("Ok Button clicked.");
         }
         else if( command.equals( "Submit" ) )  {
            statusLabel.setText("Submit Button clicked."); 
         }
         else  {
            statusLabel.setText("Cancel Button clicked.");
         }  	
      }		
   }
}

Скомпилируйте программу, используя командную строку. Перейдите к D: /> AWT и введите следующую команду.

D:\AWT>javac com\tutorialspoint\gui\AwtControlDemo.java

Если нет ошибок, это означает, что компиляция прошла успешно. Запустите программу, используя следующую команду.

D:\AWT>java com.tutorialspoint.gui.AwtControlDemo

Проверьте следующий вывод