7.1 Основы модели событий (часть 2)

7.1.3 Пример управления событием

Рассмотрим ситуацию, когда пользователь нажал на кнопку. После этого генерируется событие action event и передается слушателю action listener. Нам необходим класс, реализующий соответствующий интерфейс. В нашем случае нам необходимо реализовать интерфейс Action Listener. Это наш класс-слушатель, который определяет все методы, объявленные в интерфейсе ActionListener, для его реализации. Наш класс-слушатель должен определять методы объявленные в интерфейсе ActionListener и работать с объектами Событий. В нашем случае, это всего один метод ActionPerformed, который имеет один параметр - объектная ссылка на объект класса ActionEvent. Обратимся к куску кода, описывающему структуру слушателя.
public class MyEventTest extends JPanel
{
.    .
Jbutton myButton = new Jbutton( Blue );
// create Panels or other GUI objects    .    .

MyListener myAction = new MyListener()
MyButton.addActionListener(myListener);

private class MyListener implements ActionListener
      {
public MyListener()
      {
.    .    .    .    . // инициализация
      }
public void actionPerformed(ActionEvent event)
      {
.    .    .    .    . //Действия, происходящие при наступлении //события
      }
    }
}

Когда пользователь нажмет кнопку, объект - кнопка создаст объект класса ActionEvent и вызовет listener.actionPerformed(event).

Пример MyEventTest можно разбить на следующие шаги:
1. Создание объекта класса Button.
2. Создание объекта класса MyListener.
3. Вызов метода addActionListener для добавления слушателя MyListener к источнику событий myButton.
4. Вызов объектом класса Button метода actionPerformed слушателя.

Далее пример управления событием нажатия на кнопку.

Пример 1: Событие нажатия на кнопку
/* Version 1.30 */
import j ava.awt.*;
import j ava.awt.event.*;
import j avax.swing.*;

public class MyButton
    {
public static void main(String[] args)
      {
MyButtonFrame frm = new MyButtonFrame();
frm.show();
      }
    }

/* A frame with a panel of buttons */
class MyButtonFrame extends Frame
{
public MyButtonFrame()
{
setTitle ( To Test Button Event );
setSize(300, 200);
MyButtonPanel panel = new MyButtonPanel();
add(panel);
      }
}

/* A panel of three buttons. */
class MyButtonPanel extends Panel
{
public MyButtonPanel()
      {
// create buttons
Button bButton = new Button ( Blue ) ;
Button rButton = new Button( Green );
Button eButton = new Button( Exit );
// Add buttons to panel
add(bButton);
add(rButton);
add(eButton);
// Create button actions
      MyListenerAction bAction = new
MyListenerAction(Color.blue);
      MyListenerAction rAction = new
MyListenerAction(Color.green);
      MyListenerAction eAction = new
MyListenerAction(Color.red);

      // Add Listener object to Buttons
      bButton.addActionListener(bAction);
      rButton.addActionListener(rAction);
      eButton.addActionListener(rAction);
      }
//Action listener Class which is used to set background color
private class MyListenerAction implements ActionListener
      {
public MyListenerAction (Color c)
            {
bgColor = c;
            }
public void actionPerformed(ActionEvent event)
           {
setBackground(bgColor) ;
repaint();
if(event.getActionCommand() == Exit )
System.exit(0);
            }
private Color bgColor;
      }
}


Рисунок 7.1: Выход

назад к оглавлению вперед

Rus. Open Source company, г. Саратов
ул. Орджоникидзе, 156, офис 203
тел: 8 (8452) 57-84-41
e-mail: info@rus_opensource.com

Главная | Обзоры | О разном
Карта сайта

Учебная литература:

Введение в Linux
Основы JAVA
Архивы

© 2013 opensourcerules.net