Деякі інші слухачі подій

Існують і інші слухачі в Java в пакеті javaawt, які непогано було б знати:

ü  Слухач фокусу (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 () і ще включити шість порожніх методів

У пакеті javaawt є адаптери, які є класами, вже реалізували всі необхідні методи (правда, ці методи порожні всередині) Один з таких класів – так званий WindowAdapter Ви можете успадкувати клас, який обробляє події, від класу WindowAdapter і просто перевизначити методи, які вам потрібні, наприклад метод windowClosing ()

class MyEventProcessor extends javaawtWindowsAdapter {

public void windowClosing(WindowEvent e) {

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

/ / Який зберігає дані на диск

}

}

Останнє просто – просто зареєструйте цей клас, як слухач подій вікна у вашому класі:

MyEventProcessor myListener =  new MyEventProcessor()

addWindowListener(myListener)

Такого ж результату можна досягти, використовуючи так звані анонімні внутрішні класи, Але ця тема трохи важкувато для цієї книги

Пишемо свої слухачі подій: http://downloadoraclecom/javase/tutorial/uiswing/events/

 Практичні вправи

Спробуйте розділити число на нуль за допомогою нашого калькулятора – дисплей покаже слово Infinity Змініть клас CalculatorEngine, щоб відображалося повідомлення На нуль ділити не можна, Якщо користувач натисне на кнопку Розділити, Коли дисплей калькулятора буде порожній

Практичні вправи для розумників і розумниць

Змініть клас CalculatorEngine, щоб заборонити вводити більше однієї точки в числіПідказка: прочитайте про метод indexOf () класу String, щоб дізнатися, чи є вже в числі крапка

Джерело: Java Programming for Kids, Parents and Grandparents by Yakov Fain

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*