Слухач по імені ActionListener

Давайте повернемося до нашого калькулятору Якщо ви зробили завдання до попередньому розділі, візуальна частина програми готова Тепер ми створимо ще один клас – слухач, який буде що – то робити, коли користувач буде натискати на одну з кнопок Взагалі – то, ми могли б додати текст програми, що обробляє події натискання на кнопку, відразу в клас Calculatorjava, але краще не змішувати в одному класі візуальну та обробну частини

Назвемо другий клас CalculatorEngine, і скажемо, що він повинен реалізувати інтерфейс javaawtActionListener в якому оголошено тільки один метод – actionPerformed (ActionEvent) JVM викликає цей метод в класі, який реалізує цей інтерфейс кожен раз, коли хто – то натискає на кнопку

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

import javaawteventActionListener

public class CalculatorEngine implements ActionListener {

}

Якщо ви спробуєте його скомпілювати (або просто зберегти його в Eclipse), то виникне повідомлення про помилку, що, мовляв, клас повинен реалізувати метод actionPerformed (ActionEvent e) Давайте виправимо цю помилку:

import javaawteventActionListener

import javaawteventActionEvent

public class CalculatorEngine implements ActionListener {

public void actionPerformed(ActionEvent e){

/ / Якщо цей метод можна залишити порожнім, нічого не

/ / Станеться, коли JVM викличе його

}

}

Наступна версія цього класу буде відкривативікно повідомлення (a message box)з методу actionPerformed () За допомогою класу JOptionPane і його методу showConfirmDialog () можна показувати користувачеві будь-які повідомлення Наприклад, клас CalculatorEngine може видати наступне:

 

Є різні версії методу showConfirmDialog (), ми будемо використовувати версію з чотирма параметрами У тексті програми нижче null означає, що вікно повідомлення не має батьківського вікна, друга аргумент – це заголовок вікна повідомлення, потім йде саме повідомлення, а четвертий аргумент дозволяє вибрати, які кнопки будуть відображатися у вікні повідомлення (PLAIN_MESSAGE в наступному прикладі означає, що буде відображатися тільки одна кнопка – OK)import javaawteventActionListener import javaawteventActionEvent import javaxswingJOptionPane

public class CalculatorEngine implements ActionListener {

public void actionPerformed(ActionEvent e){ JOptionPaneshowConfirmDialog(null,

&quotSomething happened..&quot, &quotJust a test&quot, JOptionPanePLAIN_MESSAGE)

}

}

Тепер я покажу, як скомпілювати і запустити наступну версію нашого калькулятора, яка показує вікно повідомлення Something happened”Реєстрація компонентів з ActionListenerХто і коли буде викликати код, написаний в методі actionPerformed () Сама JVM викличе цей метод, якщо ви зареєструєтеклас CalculatorEngine в кнопках калькулятора (або звяжете їх з класом) Просто додайте ці два рядки в кінець конструктора класу Calculator, щоб зареєструвати наш слухач для кнопки Нуль:

CalculatorEngine calcEngine = new CalculatorEngine()

button0addActionListener(calcEngine)

Тепер кожен раз, коли користувач натисне кнопку button0, JVM викличе метод actionPerformed () в обєкта CalculatorEngine Скомпілюйте і запустіть клас Calculator і натисніть на кнопку Нуль – і на екрані зявиться вікно повідомлення Something happened” Інші кнопки поки не реагують, тому що в них не зареєстрований наш слухач Додайте такі ж рядки, щоб оживити і інші кнопки:

button1addActionListener(calcEngine) button2addActionListener(calcEngine) button3addActionListener(calcEngine) button4addActionListener(calcEngine)

і т д З — за кого подія — то Наступний крок – зробити нашого слухача трохи розумніший – він буде показувати різні повідомлення, залежно від того, яка кнопка була натиснута Коли відбудеться подія, JVM викличе метод вашого класу – слухача actionPerformed (ActionEvent), і передасть йому необхідну інформацію про подію в аргументі ActionEvent Ви можете отримати цю інформацію, викликаючи відповідні методи цього обєкта – аргументу

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

*

*