Факультет "Інформатика та системи управління"
Методичні вказівки до лабораторної роботи
за курсом "Розподілені системи обробки інформації"
Програмування графіки та обробка подій
Москва 2004 м.
Зміст
Мета роботи .. 3
Завдання для домашньої підготовки. 3
Завдання до лабораторної роботи. 3
Завдання 1. 3
Завдання 2. 3
Зміст звіту. 3
Контрольні питання. 4
Література. 5
Додаток 1. Специфікація класу Calc. 6
Додаток 2. Ієрархія класів AWT. 9
Додаток 3. Основні компоненти. 10
Компонент Label 10
Компонент Button. 10
Компонент Checkbox. 11
Клас CheckboxGroup. 11
Компонент Choice. 12
Компонент TextField. 13
Контейнер Framе. 14
Додаток 4. Менеджери розміщення. 16
Менеджер абсолютного розміщення. 16
Менеджер FlowLayout 18
Менеджер BorderLayout 18
Менеджер GridLayout 19
Менеджер CardLayout 20
Менеджер GridBagLayout 21
Додаток 5. Обробка подій. 25
Мета роботи
1. Познайомитися з бібліотекою java.awt.
2. Навчиться обробляти події.
3. Освоїти роботу з керуючими компонентами і менеджерами розміщення.
4. Застосувати отримані знання на практиці
Завдання для домашньої підготовки
Ознайомитися з матеріалом, наданим у додатках до даних методичних вказівок. Ознайомитися з текстом завдання до лабораторної роботи і написати програму.
Завдання до лабораторної роботи Завдання 1
Написати програму обробки клацань на будь-яку з трьох кнопок, розташованих на панелі. Кожного разу, коли користувач клацає мишею на який-небудь з трьох кнопок, повинен змінюватися колір панелі (жовтий, синій, червоний).
Завдання 2
o Написати програму-калькулятор, що реалізовує графічний інтерфейс.
Зміст звіту
Звіт повинен містити:
1. Постановку завдання, розв'язуваної налагодженої програмою.
2. Керівництво користувача налагодженої програми, що містить опис інтерфейсів всіх функцій програми.
3. Лістинг програми з необхідними коментарями.
Контрольні питання
1. Чому в програмі необхідно записати обробник події закриття вікна? Як закрити вікно в разі, якщо програма запущена без цього обробника?
2. Які менеджери розміщення компонентів ви знаєте? У чому особливість кожного з них?
3. Змініть програму так, щоб метод getRez () викликався при:
a) введенні тексту в одне з текстових полів
b) зміні стану прапорця (перемикачів)
c) виборі одного з пунктів випадного списку
4. Як зміниться робота програми, якщо всередині блоку switch () {} не записувати оператори break.
5. Назвіть два способи, якими можна задати заголовок (title) вікна.
Література
Офіційні джерела:
1. Кен Арнольд, Джеймс Гослінг, Девід Холмс. Мова програмування Java в„ў.
2. Офіційний сайт Java - java.sun.com/ (є розділ російською мовою з підручником).
3. Java в„ў 2 SDK, Standard Edition Documentation - java.sun.com/products/jdk/1.5/index.html.
4. Джеймс Гослінг, Білл Джой, Гай Стіл. Специфікація мови Java (The Java Language Specification - .javasoft.com/docs/books/jls/). Переклад на російську мову - .uni-vologda.ac.ru/java/jls/index.html
5. Офіційний сайт проекту Eclipse - .eclipse.org/.
Інше:
1. Дмитро Рамодін. Починаємо програмувати на мові Java.
2. Микола Смирнов. Java 2: Навчальний посібник.
3. Картузов А. В. Програмування на мові Java.
4. Вязовік Н.А. Програмування на Java.
5. Олексій Литвинюк. Введення в інтегроване середовище розробки Eclipse - lib.juga.ru/article/articleview/174/1/69/.
Додаток 1. Специфікація класу Calc.
import java.awt. *;// підключення пакета з класами графічних компонентів
import java.awt.event. *;// підключення пакету з інтерфейсами - "слухачами"
class Calc extends Frame implements ActionListener
// успадковуємо клас Frame (вікно) і інтерфейс "слухача" події натискання кнопки
{
TextField t1 = new TextField (8);// розмір поля - 8 символів
// ... інші текстові поля
Label l1 = new Label ("(double)");// мітка за умовчанням містить текст В«(double)В»
// ... інші мітки
Button b = new Button ("Отримати результат");// кнопка
Checkbox cb = new Checkbox ("+20%") ;//прапорець з назвою
Choice ch ;//випадаючий список
public Calc () {//конструктор класу
super ();
setSize (400,200) ;//розмір вікна
ch = new Choice () ;//конструктор випадаючого списку
ch.addItem ("+") ;//додаємо пункти списку
// ... інші пункти списку
setLayout (new FlowLayout ());// призначаємо менеджер розміщення компонентів (компонувальник)
add (l1) ;//виводимо створені компоненти на екран
add (t1);
add (ch);
// ... та інші
addWindowListener (new WindowAdapter () {//додаємо обробник кнопки закриття вікна
public void windowClosing (WindowEvent e) {
dispose (); System.exit (0);
}
}
);
b.addActionListener (this) ;//додаємо обробник натискання на кнопку
show () ;//робить вікно видимим
}// кінець конструктора
public void getRez () {//метод, що обчислює результат
double x,// ​​значення з першого текстового поля
Rez = 0;// результат
// ... друга змінна - значення другого текстового поля
try {
x = new Double (t1.getText ()). doubleValue () ;//витяг числа з першого текстового поля
// ...
switch (ch.getSelectedIndex ()) {//який пункт випадного списку обраний? (Номер)
case 0: Rez = x +/* Друга змінна * /; break;
case 1:// ...
// ... інші оператори
};
if (cb.getState ()) Rez * = 1.2 ;//якщо прапорець натиснуто, множимо результат на 1.2
// записуємо текст в поле (Мітку) результату за допомогою методу setText (String.valueOf (Rez));
}// закінчення блоку try
catch (Exception ex) {
String s = new String (ex.getMessage ());
// записуємо текст в поле (Мітку) повідомлення про ощібке за допомогою методу setText ("Помилка" + s);
}// закінчення блоку catch
}// закінчення методу getRez ()
public void actionPerformed (ActionEvent e) {getRez ();}// реалізація методу actionPerformed
// (метод викликається натисканням на кнопку b), див. вище
public static void main (String [] A) {Calc clc = new Calc ();}// створюємо тільки екземпляр класу Calc і всі.
}// закінчення класу Calc
Додаток 2. Ієрархія класів AWT
На рис. 1 показана ієрархія основних класів AWT. Основу її складають готові компоненти: Button, Canvas, Checkbox, Choice, Container, Label, List, Scrollbar, TextArea, TextField, Menubar, Menu, PopupMenu, Menultem, CheckboxMenuItem. Якщо цього набору не вистачає, то від класу Canvas можна породити власні "важкі" компоненти, а від класу Component - "Легкі" компоненти.
Основні контейнери - це класи Panel, ScrollPane, Window, Frame, Dialog, FileDialog. Свої "важкі" контейнери можна породити від класу Panel, а "легкі" - від класу Сontainer.
На рис. 1 також показані і початкові класи ієрархії бібліотеки Swing - класи JComponent, JWindow, JFrame, JDialog, JApplet.
Рис. 1 Ієрархія основних класів AWT
Додаток 3. Основні компоненти
Компонент Label
Компонент Label - це просто рядок тексту, оформлена як графічний компонент для розміщення в контейнері. Текст можна поміняти тільки методом доступу setText (s...