Главная » Java » Некоторые другие слушатели событий

0

Существуют  и  другие  слушатели в  Java  в  пакете  java.awt,  которые неплохо  было бы знать:

?? Слушатель  фокуса (FocusListener) посылает сигнал вашему классу, когда компонент окна получает или теряет фокус. Например, говорят, что текстовое поле имеет фокус, если в нем мигает курсор.?? Слушатель  элемента (ItemListener) реагирует на выборэлементов  в обычном или выпадающем списке.?? Слушатель  клавиш (KeyListener) реагирует на  нажатияклавиш. ?? Слушатель  мыши  (MouseListener)  реагирует,  когда нажимают  на  кнопку  мыши,  или  она  входит  в  область компонента  окна или выходит из нее.?? Слушатель   движений   мыши  (MouseMotionListener) сообщает вам,  когда  мышь двигается  или  что-­?то тащит. Тащить (drag) означает двигать  мышь  с  нажатой  клавишей. ?? Слушатель окна (WindowListener)  дает  вам  шанс  уловить  моменты, когда пользователь открывает, закрывает,  уходит  из окна или заходит в него.В  следующей таблице вы увидите имена интерфейсов слушателей, иметоды,  которые эти интерфейсы объявляют.

Interface 

Methods to implement

FocusListener ItemListener KeyListener      

              MouseListener   MouseMotionListener

WindowListener

            

 

focusGained(FocusEvent)

focusLost(FocusEvent)

itemStateChanged(ItemEvent) keyPressed(KeyEvent)  keyReleased(KeyEvent)

keyTyped(KeyEvent) mouseClicked(MouseEvent)    mouseEntered(MouseEvent)

mouseExited(MouseEvent) mousePressed(MouseEvent)

mouseReleased(MouseEvent) mouseDragged(MouseEvent)

mouseMoved(MouseEvent)

windowActivated  (WindowEvent) windowClosed(WindowEvent) windowClosing(WindowEvent) windowDeactivated(WindowEvent)  windowDeiconified(WindowEvent) windowIconified(WindowEvent) windowOpened(WindowEvent)

Напрмер,  интерфейс FocusListener  объявляет  два  метода: focusGained()  и focusLost().  Это  означает,  что  даже  если  ваш класс  заинтересован  только  в  обработке  события  получения  фокуса каким-­?либо  элементом  окна,  вы  все  равно  должны  включить  пустой метод  focusLost().   Это  может   раздражать,   поэтому   Java предоставляет специальные классы-­?адаптеры  для каждого слушателя, чтобы упростить обработку событий.Как использовать адаптерыСкажем,  вам  нужно  сохранить  какую-­?нибудь  информацию  на  диск, когда  пользователь  закрывает  окно.  В  соответствии с  предыдущей таблицей,   класс, который реализует интерфейс WindowsListener должен включать семь методов. Это значит, что вам придется писать текст программы  в методе windowClosing() и еще включить шесть пустых методов.

В  пакете  java.awt  есть  адаптеры,  которые  являются  классами,  уже реализовавшими все необходимые методы (правда, эти методы пустые внутри). Один из таких классов – так называемый WindowAdapter. Вы можете  унаследовать класс, который обрабатывает события, от класса WindowAdapter и просто переопределить методы, которые вам нужны, например метод windowClosing().

class MyEventProcessor extends java.awt.WindowsAdapter {

public void windowClosing(WindowEvent e) {

// здесь находится ваш текст программы,

// который сохраняет данные на диск

}

}

Остальное просто – просто зарегистрируйте этот класс, как  слушатель событий  окна в вашем классе:

MyEventProcessor myListener =  new MyEventProcessor();

addWindowListener(myListener);

Такого  же результата можно достичь, используя так называемые анонимные внутренние классы, но эта тема немного сложновата для этой книги.

              Пишем  свои слушатели событий:http://download.oracle.com/javase/tutorial/uiswing/events/

 Практические упражнения

Попробуйте   разделить   число   на   ноль с помощью  нашего калькулятора  -­?   дисплей  покажет   слово   Infinity. Измените   класс  CalculatorEngine,    чтобы  отображалось сообщение ”На ноль делить нельзя”, если пользователь  нажмет     на    кнопку ”Разделить”,  когда  дисплей  калькулятора будет  пуст.

Практические упражнения для умников и умниц

Измените  класс CalculatorEngine , чтобы запретить вводить больше одной точки в числе.Подсказка: прочтите  про метод  indexOf()  класса  String, чтобы  узнать,  есть  ли  уже  в  числе точка.

Источник: Java  Programming for Kids, Parents and Grandparents by Yakov Fain

По теме:

  • Комментарии