Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vidpovidi_OOP.doc
Скачиваний:
21
Добавлен:
23.02.2016
Размер:
281.6 Кб
Скачать

35.Бібліотека awt компонентів інтерфейсу користувача

Якщо інтерфейс містить багато методів, а програмісту потрібний з них один або два, то інші доведеться описувати порожніми. Це не зручно і щоб уникнути такої ситуації в Java передбачені класи-адаптери, які містять порожні методи відповідного інтерфейсу.

Розглянемо, наприклад, інтерфейс WindowListener. Він містить 7 методів.

public iterface WindowListener

{

void windowOpened(WindowEvent e); //метод, що викликається після відкриття вікна

void windowClosing(WindowEvent e); //метод, що викликається під час команди закриття вікна

void windowClosed(WindowEvent e); //метод, що викликається після того як вікно було закрито

void windowIconified(WindowEvent e); //метод, що викликається після згортання вікна

void windowDeiconified(WindowEvent e); //метод, що викликається після розгортання вікна

void windowActivated(WindowEvent e); //метод, що викликається після активізації вікна

void windowDeactivated(WindowEvent e); //метод, що викликається після того, як вікно стало не активним

}

Найчастіше потрібно організувати закриття вікна. Це означає, що потрібно в класі, який підтримує інтерфейс WindowListener, визначити метод windowClosing(WindowEvent e):

class Terminator implements WindowListener

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

public void windowOpened(WindowEvent e){};

public void windowClosed(WindowEvent e) {};

public void windowIconified(WindowEvent e) {};

public void windowDeiconified(WindowEvent e) {};

public void windowActivated(WindowEvent e) {};

public void windowDeactivated(WindowEvent e) {};

….

}

Тобто маємо 6 порожніх методів. Замість цього можемо скористатись класом-адаптером WindowAdapter:

class Terminator extends WindowAdapter

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

}

Інші 6 методів визначені в класі-адаптері.

Тепер об’єкт класу Terminator можна зареєструвати як обробник подій(!):

WindowListener listener = new Terminator();

frame.addWindowListener(listener);

Можна також використати безіменний внутрішній клас у якості обробника:

frame.addWindowListener(

new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

}

);

Ієрархія подій бібліотеки AWT

Всі події є нащадками суперкласу EventObject.

Клас EventObject має нащадка AWTEvent. Цей клас має нащадків ActionEvent, AdjustmentEvent, ComponentEvent, ItemEvent. Клас ComponentEvent має нащадків FocusEvent, InputEvent, PaintEvent, WindowEvent. Клас InputEvent має нащадків KeyEvent, MouseEvent. Клас MouseEvent має одного нащадка MouseWheelEvent.

Найбільш часто використовувані події AWT:

ActionEvent, //клік на кнопці, вибір пункту меню, вибір пункту в списку, натискання клавиші <Enter>

AdjustmentEvent, // переміщення ползунка на полосі прокрутки

FocusEvent,

ItemEvent,

KeyEvent,

MouseEvent,

MouseWheelEvent,

WindowEvent.

Відповідні інтерфейси для створення обробників подій мають імена: ActionListener, AdjustmentListener, FocusListener, ItemListener, KeyListener, MouseListener,MouseMotionListener, MouseWheelListener, WindowListener, WindowFocusListener,WindowStateListener.

Відповідні класи-адаптери FocusAdapter, KeyAdapter, MouseAdapter, MouseMotionAdapter, WindowAdapter.

Для того щоб перевірити чи натиснута клавіша <Shift>, <Alt>, <Control> використовуються методи isShiftDown(),isAltDown(),isControlDown() класу KeyEvent.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]