Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Классы адаптеры

Читайте также:
  1. HLA - система; классы антигенов, биологические функции, практическое значение HLA-типирования.
  2. MyString классын жазыныз. 3
  3. АВТОМОБИЛИ УЧАСТНИКОВ. КЛАССЫ. ОБЯЗАТЕЛЬНЫЕ НАДПИСИ.
  4. Б. Классы статистического риска (лица с нормальной толерантностью к глюкозе, но со значительно повышенным риском развития сахарного диабета)
  5. Большие классы слегка проблемны. (Вероятно.) Но большие школы - никуда не годятся. (Абсолютно.)
  6. Вы можете себя считать успешным инструктором, если ваши классы заполнены!
  7. ГЛАВА 2 | Классы персонажей

Многие из интерфейсов слушателей событий содержат многочисленные методы. Например, MouseListener и MouseMotionListener. Так как класс реализующий интерфейс должен определить все методы из данного интерфейса, но не всегда требуется определять каждый метод интерфейса слушателя событий. Поэтому в пакетах java. awt. event и javax.swing.event реализованы классы адаптеров слушателей событий. Класс адаптера реализует интерфейс и по умолчанию определяет каждый метод в интерфейсе с пустым типом метода.

 

Таблица 20.1

классы адаптеры реализуемые интерфейсы
   
ComponentAdapter ComponentListener
ContainerAdapter ContainerListener
FocusAdapter FocusListener
KeyAdapter KeyListener
MouseАdapter MouseListener
MouseMotionAdapter MouseMotionListener
WindowAdapter WindowListener

 

 

Вызов метода без указания ссылки на объект и “.” интерпретируется как вызов метода объекта (this), т.е. метод вызывается для данного экземпляра класса во время выполнения программы, например, addWindowListener (andCloser).

Программист может расширить класс адаптера посредством наследования реализации по умолчанию каждого метода с последующим переопределением методов, необходимых для обработки событий. Реализация каждого метода по умолчанию в классе адаптера имеет пустое тело. Это именно то, что мы делали в каждом приложении, расширяя класс JFrame и определяя метод windowCIosing для обработки события закрытия окна и завершения приложения.

Рассмотрим приложение, которое использует обработчик события mouseDragged для создания простой программы для рисования, методом перетаскивания мыши в окне приложения. В этом примере интерфейс MouseMotionListener реализован как подкласс адаптера MouseMotionAdapter.

// Painter.java

1 import java.awt.*;

2 import java.awt.event.*;

3 import javax.swing.*;

4 public class Painter extends JFrame{

5 private int xVal=-10,yVal=-10;

6 public Painter(){

6 super("risovanie");

7 getContentPane().add(new Label("mouse"),

BorderLayout.SOUTH);

8 addMouseMotionListener(

9 new MouseMotionAdapter(){

10 public void mouseDragged(MouseEvent event){

11 xVal=event.getX();

12 yVal=event.getY();

13 repaint();

14 }

15 }

16);

17 setSize(300,150);

18 setVisible(true);

19 }

20 public void paint(Graphics g){

21 g.setColor(Color.red);

22 g.fillOval(xVal,yVal,8,8);

23 }

24 public static void main(String args[]){

25 Painter app=new Painter();

26 app.addWindowListener(

27 new WindowAdapter(){

28 public void windowClosing(WindowEvent event){

29 System.exit(0);

30 }

31 }

32);

33 }

34 }

 

Рис 20.6 Рисование с помощью указателя мыши

В строках с 9-15 определяется анонимный внутренний класс, расширяющий класс MouseMotionAdapter (который реализует интерфейс MouseMotionListener). Анонимный внутренний класс наследует стандартную реализацию обоих метеодов mouseMoved и mouseDragged. Таким образом, анонимный класс уже удовлетворяет требованию, чтобы в интерфейсе были определены все методы. В строках 10-14 метод mouseDragged переопределяется, и в нем определяются х- и у- координаты события перетаскивания мыши и запоминаются в переменных xValue и yValue. Затем вызывается метод repaint() для инициализации вывода изовражения следующего овала на фоне окна (выполняется методом paint() в строках 20-23). В строке 26 регистрируется слушатель WindowListener для обработки событий окна приложения(событие закрытия окна). Определение анонимного внутреннего класса, расширяющего класс WindowAdapter (реализующего интерфейс WindowListener) – в строке 27. Анонимный класс наследует базовую реализацию семи различных методов-обработчиков событий окна. А мы переопределяем только метод windowClosing (строки 28-30)для завершения приложения при нажатии на кнопку закрытия окна программы.


Дата добавления: 2015-10-29; просмотров: 111 | Нарушение авторских прав


Читайте в этой же книге: Управляющие структуры и операции в Java | Создание программы. | Классы String и String Buffer | Основные свойства объектно-ориентированного подхода | Создание собственных пакетов. | Класс Graphics | Интерфейс Java2D | Графический интерфейс пользователя. | Менеджеры компоновки | Слушатели (listeners) полей и кнопок. |
<== предыдущая страница | следующая страница ==>
Обработка событий мыши| Использование потоков в анимации

mybiblioteka.su - 2015-2024 год. (0.007 сек.)