Компонента, яка зображається на екрані, повинна додаватись до класу – контейнера. Контейнери служать сховищем для візуальних компонентів інтерфейсу та інших контейнерів. Найпростіший приклад контейнера – клас Frame, об'єкти якого відображаються на екрані як стандартні вікна з рамкою.
Щоб показати компонент користувацького інтерфейсу у вікні, потрібно створити об'єкт– контейнер, наприклад вікно класу Frame, створити необхідний компонент і додати його в контейнер, а потім відобразити його на екрані. У тексті програми цей процес займає кілька рядків:
Label text = new Label("Рядок");// Створюється об'єкт "Рядок"
SomeContainer.add (text); // Об'єкт додається в контейнер
SomeContainer.Show();// Відображається контейнер
У прикладі використано варіант методу add, що приймає один аргумент – вказівник на об'єкт, що заноситься в контейнер. Інші варіанти методу add() мають два аргументи: порядковий номер у списку керуючих елементів контейнера, куди буде вставлений елемент і вказівник на об'єкт; або рядок, що вказує місце у вікні, де повинен бути розміщений об'єкт інтерфейсу, і вказівник на об'єкт, що вставляється.
Використання компонентів інтерфейсу. Розглянемо деякі приклади використання класів компонентів. Відзначимо, що способи опрацювання повідомлень від компонентів тут не наводяться.
Клас Label. За допомогою класу Label можна створювати текстові рядки у вікні Java– програм і аплетів.
КласButton представляє на екрані кнопку.
Клас Checkbox відповідає за створення і відображення кнопок з незалежною фіксацією. Ці кнопки мають два стани: "включене" і "виключене".
КласChoiceдозволяє створити список, що розкривається.
Клас List(список) за призначенням подібний на клас Choice. Він представляється вікном зі смугами прокручування, всередині якого знаходяться пункти вибору. Вибір пунктів здійснюється подвійним кліком мишею чи натисненням клавіші <Enter> після виділення пункту.
КласScrollbar представляє на екрані смугу прокручування.
Два класи TextField і TextAreaдозволяють відображати текст із можливістю його виділення і редагування.
Клас Panel – це контейнер, в який додаються інші елементи чи контейнери інтерфейсу. Він використовується якщо необхідно виконати складне розміщення елементів у вікні Java– програми чи аплету.
Одним з найважливіших класів інтерфейсу користувача можна вважати клас Frame. За допомогою цього класу реалізуються вікна Java – програм і аплетів. На відміну від інших класів інтерфейсу користувача, екземпляри класу Frame створюються рідко. Від нього успадковуються нові класі, на основі яких створюються об’єкти.
Основними методами класу Frame є: pack() – змінити розмір компонентів у вікні так, щоб їхній розмір був максимально наближений до бажаного; getTitle() – повернути заголовок вікна; setTitle(String) – установити заголовок вікна; getIconImage() – повернути піктограму вікна; setIconImage(Image) – встановити піктограму вікна; getMenuBar() – повернути об'єкт меню вікна; setMenuBar(MenuBar) – встановити меню вікна; remove(MenuComponent) – вилучити позначений компонент із меню вікна; isResizable() – повернути true, якщо розмір вікна можна змінювати, інакше – false; setResizable(boolean) – дозволити зміну розмірів вікна; getCursorType() – повернути біжучий тип курсору миші для вікна; setCursor(int) – встановити тип курсору миші для вікна.
КласDialogпризначенийдля підтримки зв'язку з користувачем і створення діалогових панелей. На відміну від простих вікон діалогові панелі залежать від того чи іншого вікна, і тому в їхніх конструкторах присутній параметр– вказівник на вікно класу Frame, що володіє цією діалоговою панеллю.
Класи елементів меню. Мова Java має кілька класів для створення меню, успадкованих від класу MenuComponent. Клас MenuBar є основним в системі меню, контейнером для інших класів. При створенні вікна вказівник на меню MenuBar необхідно передати його конструктору .
Клас Menu на смузі меню відображається як пункт вибору, який розкривається у виді сторінки з пунктами вибору (pop– up menu), якщо по ньому клікнути. Самі ж елементи вибору меню реалізуються як екземпляри класів MenuItem (простий елемент вибору) і CheckboxMenuItem (елемент вибору).
КласCanvas.При необхідності створити область для виведення даних (зображень і тексту) чи малювання необхідно використати клас Canvas. Це віртуальне "полотно" для художника і письменника. Клас Canvas також можна використовувати як базовий клас для створення своїх елементів інтерфейсу, наприклад, власної кнопки.
Створення будь - якого спадкоємця від Canvas базується на реалізації методів paint() для малювання зображення і тексту на робочій поверхні, minimumSize() іpreferredSize()для керування її розмірами.
Планування розташування.Для керування розміщенням елементів – контейнерів у вікні Java використовує менеджер планування розташування об’єктів на поверхні (layout manager). Від нього успадковуються п'ять класів, що визначають той чи інший тип розташування компонентів інтерфейсу користувача у вікні. Для зміни типу розташування при створенні класу, що відповідає поставленому завданню вказівник на нього передається методу setLayout(), що змінює біжуче планування:
setLayout( new BorderLayout() ); // встановити розташування елементів
Наведемо приклад формування областей введення та виведення тексту при пообудові програми надсилання пошти за протоколом SMTP.
import java.io.*;
import java.net.*;
import java.awt.*;
public class Mail extends Panel {
setLayout(new BorderLayout());
TextField smtp;
TextField from;
TextField to;
TextField subject;
TextArea body;
static TextArea out;
Label from1;
Label to1;
Label subject1;
Label smtp1;
public Mail(Canvas canvas){
add(smtp1=new Label("SMTP"));
add(smtp=new TextField("",25));
add(subject1=new Label("Тема"));
add(subject=new TextField("",25));
add(from1=new Label("Звідки"));
add(from=new TextField("",24));
add(to1=new Label("Куди "));
add(to=new TextField("",25));
add(body=new TextArea("",10,70,3));
add(new Button("Відіслати"));
add(out=new TextArea("",5,70,1));
}
public static void main(String args[]) {
Canvas c = new Canvas();
Frame f = new Frame("Mail");
Mail newmail = new Mail(c);
f.add("Center", newmail);
f.resize(300, 300);
f.show();
}
}
Програма наведеного прикладу готує інтерфейс (рис.2) для заповнення полів відповідними текстами та реалізації команди на відсилання тексту повідомлення.
Задачею лабораторної роботи є побудова програми для моделювання руху об'єктів на площині (рис.2). Вибір об'єктів здійснюється з візуального меню у вікні Стрічкове меню дає можливість створювати нове вікно, змінювати швидкість руху об’єктів, задавати кількість генерованих об’єктів та інші їх характеристик. Об’єкти генеруються у вікні. Рухаються і відбиваючись від стінок (один від одного) продовжують рух.
Студент має побудувати всі можливі класи для ідентифікації всіх можливих об’єктів, з властивостями бути перенесеними і намалювати ці об’єкти.(програма має мати можливість роздрукувати малюнок на принтері).