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: Выход