Події вікна

Під час роботи програми можуть відбуватися різні події: користувач натисне на кнопку, веб – браузер вирішить перемалювати вікно, і так далі Я впевнений, що ви намагалися натискати на кнопки вашого калькулятора з глави 5, але ці кнопки ще не були готові реагувати на ваші дії

Кожен компонент вікна може обробляти різні події, або, як ми говоримо,слухати ці події Ви можете зареєструвати класи Java, які називають слухачами (listeners), Привязавши їх до компонентів вікна Ви повинні зробити так, щоб компоненти слухали тільки ті події, які їм потрібні

Наприклад, коли людина переміщає покажчик мишки над кнопкою калькулятора, неважливо де саме був цей покажчик, коли користувач натиснув на кнопку, поки курсор знаходився над поверхнею кнопки Тому вам не потрібно реєструвати слухач MouseMotionListener для кнопки З іншого боку, цей слухач корисний для всіляких програм для малювання

Для кнопок калькулятора потрібно зареєструвати клас ActionListener, який вміє обробляти натискання на кнопки Всі ці слухачі – це спеціальні конструкції Java, які називаються інтерфейсами

ІнтерфейсиБільшість класів визначають методи, які реагують на різні дії, наприклад,відповім на натискання кнопки,  відповім на рух миші, І так далі Набір таких дій називається поведінкою класу

Інтерфейси – це спеціальні конструкції, які тільки оголошують набір певних дій без коду, який описує, що саме треба робити в оголошених методах, наприклад:

interface MouseMotionListener {

void mouseDragged(MouseEvent e)

void mouseMoved(MouseEvent e)

}

Як бачите, методи mouseDragged () і mouseMoved () не містять ніякого тексту програм – ці методи просто оголошені в інтерфейсі, званому MouseMotionListener А от якщо ваш клас повинен реагувати на рух покажчика миші або на перетягування мишею, то тоді він маєреалізувати цей інтерфейс

Слово implements означає, що цей клас абсолютно точно буде містити методи, які могли бути оголошені в інтерфейсі, наприклад:

import javaawteventMouseMotionListener

class MyDrawingPad implements MouseMotionListener{

/ / Тут може йти текст програми, яка

/ / Виконує функції графічного редактора

mouseDragged(MouseEvent e){

/ / Тут буде текст програми, коли

/ / Миша щось перетягує

}

mouseMoved(MouseEvent e){

/ / Сюди йде текст програми, коли

/ / Миша просто буде тут рухається

}

}

Повинно бути, вам цікаво, навіщо турбуватися про створення інтерфейсів без тексту програми Причина в тому, що інтерфейс, зроблений одного разу, може використовуватися в багатьох класах Наприклад, коли інші класи (або сама віртуальна машина JVM) бачать, що клас MyDrawingPad реалізує інтерфейс MouseMotionListener, вони знають, що в цьому класі точно є методи mouseDragged () і mouseMoved ()

Кожен раз, коли користувач рухає мишкою, JVM викликає метод mouseMoved () і виконує текст програми, який ви там написали Уявіть, що якщо Іван вирішить назвати цей метод mouseMoved (), Маша назве його movedMouse (), а Петя віддасть перевагу mouseCrawling () Тоді JVM заплутається і не буде знати, який же метод вашого класу викликати, щоб повідомити про рух миші

Клас Java може реалізовувати багато інтерфейсів, наприклад, онможет реагувати на рухи миші і на натискання кнопки:

class myDrawingProgram implements MouseMotionListener, ActionListener {

/ / Тут ви повинні написати текст програми для

/ / Кожного методу ОБЬЯВЛЕНИЯ в обoіх інтерфейсax

}

Після того, як ви звикнете з інтерфейсами, які надає вам Java, ви зможете створювати свої

Джерело: 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>

*

*