- •1. Історія виникнення об’єктно-орієнтованої парадигми
- •6. Визначення класу. Опис класу з використанням мов програмування с, Java, Object Pascal.
- •7. Об’єкт. Створення та знищення об’єктів
- •8. Мова Java –об’єктно-орієнтована мова програмування.
- •16. Механізм перевизначення методів класу-нащадка.
- •17. Множинне наслідування та його проблеми.
- •18. Реалізація наслідування мовою Java.
- •19. Реалізація наслідування мовою Object Pascal.
- •22. Поняття інтерфейсу.
- •23.Програмування інтерфейсів.
- •24.Використання інтерфейсів.
- •25.Інтерфейс Comparable.)
- •26. Механізм зворотного виклику. Інтерфейс ActionListener.
- •29.Компоненти інтерфейсу користувача.
- •30.Використання об’єктів Timer і Date для об’єктно-орієнтованого моделювання процесів
- •31.Механізм об’єктних інтерфейсів в Delphi.
- •32.Клас tObject.
- •33.Об’єктні інтерфейси.
- •34.Обробники подій компнонентів Delphi.
- •35.Бібліотека awt компонентів інтерфейсу користувача
- •36.Бібліотека Swing компонентів інтерфейсу користувача
- •41.Поняття Java-аплета
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.