Компонент та контейнер - Інформатика, програмування
3.1 Компонент та контейнер
Основне поняття графічного інтерфейсу користувача (ГІП) – компонент (component) графічної системи. в українській мові це слово має на увазі просто складову частину, елемент чогось, але в графічному інтерфейсі це поняття набагато конкретніше. Воно означає окремий, певний елемент, який можна використовувати в графічному інтерфейсі незалежно від інших елементів. Наприклад, це поле введення, кнопка, рядок меню, смуга прокручування, радіокнопка. Саме вікно програми - теж його компонент. Компоненти можуть бути і невидимими, наприклад, панель, що поєднує компоненти, також є компонентом.
Ви не здивуєтеся, дізнавшись, що AWT компонентом вважається об'єкт класу Component або об'єкт будь-якого класу, що розширює клас component. У класі component зібрано загальні методи роботи з будь-яким компонентом графічного інтерфейсу користувача. Цей клас є центром бібліотеки AWT.
Кожен компонент перед виведенням на екран міститься у контейнер (container). Контейнер знає, як розмістити компоненти на екрані. Зрозуміло, у мові Java контейнер — це об'єкт класу Container чи його розширення. Прямий спадкоємець цього класу – клас jcomponent – вершина ієрархії багатьох класів бібліотеки Swing.
Створивши компонент - об'єкт класу Component або його розширення, слід додати його до попередньо створеного об'єкта класу container або його розширення одним із методів add().
Клас Container сам невидимий компонент, він розширює клас Component. Таким чином, контейнер поряд з компонентами можна поміщати контейнери, в яких знаходяться якісь інші компоненти, досягаючи тим самим великої гнучкості розташування компонентів.
Основне вікнододатки, що активно взаємодіє з операційною системою, необхідно побудувати за правилами графічної системи. Воно повинно переміщатися по екрану, змінювати розміри, реагувати на дію.
ня миші та клавіатури. У вікні повинні бути щонайменше такі стандартні компоненти.
- Рядок заголовка (title bar), з лівого боку якого необхідно розмістити кнопку контекстного меню, а з правого — кнопки згортання та розгортання вікна та кнопку закриття програми.
- Необов'язковий рядок меню (menu bar) з пунктами меню.
- Горизонтальна та вертикальна смуги прокручування (scrollbars).
- Вікно має бути оточене рамкою (border), що реагує на дії миші.
Вікно з цими компонентами у готовому вигляді описано у класі Frame. Щоб створити вікно, достатньо зробити свій клас розширенням класу Frame, як показано у лістингу 8.1. Усього вісім рядків тексту та вікно готове.
Розділ 4 Аплети
Крім додатків, мова Java дозволяє створювати аплети (applets). Це програми, які працюють у середовищі іншої програми – браузера. Аплети не потребують вікна верхнього рівня - їм служить вікно браузера. Вони не запускаються JVM - їх завантажує браузер, який сам запускає JVM для виконання аплету. Ці особливості відбиваються написання програми аплету.
З погляду мови Java, аплет - це всяке розширення класу Applet, який, своєю чергою, розширює клас panel. Таким чином, аплет – це панель спеціального вигляду, контейнер для розміщення компонентів із додатковими властивостями та методами. Менеджером розміщення компонентів за замовчуванням, як і в класі Panel, є FiowLayout. Клас Applet знаходиться у пакеті java. applet, у якому крім нього є лише три інтерфейси, реалізовані у браузері. ТребаНе всі браузери реалізують ці інтерфейси повністю.
Оскільки JVM не запускає аплет, відпадає необхідність у методі main(), його немає в аплетах.
В аплетах рідко зустрічається конструктор. Справа в тому, що при запуску першого створюється його контекст. Під час виконання конструктора контекст ще сформований, тому всі початкові значення вдається визначити у конструкторі.
Початкові дії, які зазвичай виконуються в конструкторі та методі mamo, в аплеті записуються в метод inito класу Applet. Цей метод автоматично запускається виконуючою системою Java браузера відразу після завантаження аплета. Ось як він виглядає у вихідному коді класу Applet:
public void init()<>
Не густо! Метод init() не має аргументів, не повертає значення і повинен перевизначатися в кожному аплеті - підклас класу Applet. Зворотні дії - завершення роботи, звільнення ресурсів - записуються при необхідності в метод destroy, теж виконується автоматично при вивантаженні аплету. У класі Applet є марна реалізація цього способу.
Крім методів init() і destroy() у класі Applet присутні ще два порожні методи, що виконуються автоматично. Браузер повинен звертатися до методу start() при кожній появі аплета на екрані і звертатися до методу stop(), коли аплет виходить з екрана. У методі stop() можна визначити дії, що призупиняють роботу аплету, методі start() — що відновлюють її. Треба відразу ж помітити, що не всі браузери звертаються до цих методів як слід.