МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра САП
Звіт
до лабораторної роботи №5
на тему:
«Створення графічних додатків в Java. Використання елементів управління AWT»
Підготував:
Ст.гр. КН-313
Горук Т.І.
Перевірив:
Кривий Р.З.
ЛЬВІВ 2008
МЕТА РОБОТИ
Метою роботи є придбання навиків програмування графічних додатків Java з використанням елементів управління AWT.
ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ
3.6. Створення графічних додатків
Для створення графічних додатків в Java використовуються фрейми.
Фрейм (невидимий в початковий момент) можна створити або конструктором без параметрів
public Frame()
(без заголовка) або конструктором
public Frame(String frameTitle)
(із заголовком).
Після створення, перед відображенням фрейма на екрані, необхідно задати його розміри і положення на екрані, використовуючи методи
public void setSize(int x, int у)
public void setLocation(int x, int у)
Щоб фрейм став видимим або невидимим, необхідно звернутися до методу
public void is Visible(boolean visibility).
Стан фрейма (згорнутий або розгорнений) визначається за допомогою властивостей
public static final int Frame.ICONIFIED
public static final int Frame.NORMAL.
Поки фрейм існує (видимий чи ні), він займає частину ресурсів віконної системи, в якій виконується додаток або аплет. Якщо фрейм більше не потрібен, його слід знищити, використовуючи метод
public void dispose(),
визначений в класі Windows.
Поки фрейм існує (видимий чи ні), він займає частину ресурсів віконної системи, в якій виконується додаток або аплет. Якщо фрейм більше не потрібен, його слід знищити, використовуючи метод
public void dispose(),
визначений в класі Windows.
У класі Frame визначені наступні основні методи:
public String getTitle() і public void setTitle(String newTitle) - визначення і завдання заголовка, що відображається у верхній частині фрейма;
public void setResizable(boolean allowResizing) і public boolean isResizable() - установка або відміна заборони зміни розмірів фрейма і перевірка значення allowResizing;
public Image getIconImage() і public void setIconImage(Image image) - визначення і установка значка-зображення для даного фрейма;
public int getState() і public void setState(int state) - визначення і установка стану даного фрейма (стан рівний одній з двох констант, приведених вище).
Для створення графічного додатку необхідно виконати наступні дії:
1. Оголосити клас в додатку як клас, що розширює клас Frame.
2. Визначити в класі конструктор, в якому повинні бути задані наступні оператори:
2.1. super("ім'я"); - для виклику конструктора класу Frame.
2.2. setSize(ширина, висота); - установка розмірів вікна.
2.3. setLocation(координата-x, координата-y); - установка положення вікна на екрані.
2.4. addWindowListener(this); - додати блок прослуховування вікна з обробкою закриття вікна за допомогою методу windowClosing(), а також (при необхідності) інших методів інтерфейсу WindowListener або класу WindowAdapter;
2.5. setVisible(true); - зробити вікно видимим.
У конструкторі можуть бути визначені і інші необхідні дії.
3. Створити в методі main() за допомогою конструктора новий об'єкт класу, що розширює клас Frame і (при необхідності) виконати інші дії.
4. При необхідності виконати первинне промальовування вікна за допомогою методу paint().
Нижче приведений скелет програми - графічного додатку:
import java.awt.* ;
import java.awt.event.*;
public class GraphicApplication extends Frame
{
...
// Конструктор класу GraphicApplication
public GraphicApplication (String frameName)
// Виклик конструктора класу Frame
super(frameName);
// Додавання блоку прослуховування вікна
addWindowListener(
new WindowAdapter()
// Обробка закриття вікна
public void windowClosing
(WindowEvent e)
{
// Завершення програми
System.exit(0);
// Інші методи WindowAdapter
);
// Установка розміру фрейма
setSize(ширина, висота);
// Установка положення фрейма
setLocation(x, у);
// Зробити фрейм видимим
setVisible(true);
}
// Метод main()
public static void main(String args[])
// Створення нового об'єкту
// класу ApplicationExample
new GraphicApplication("имя_окна");
}
// Метод paint() (виконується при промальовуванні вікна)
public void paint(Graphics g)
// Виклик методів малювання
}
Нижче приводиться скелет програми, яка може виконуватися і як додаток, і як аплет:
import java.applet.*;
import java.awt.* ;
import java.awt.event.*;
public class AppletAndApplication extends Applet
{
...
// Метод main()
public static void main(String args[])
// Оголошення нового об'єкту
// класу ApplicationFrame
ApplicationFrame windowForApplication =
new ApplicationFrame("ім'я");
// Установка розміру фрейма
windowForApplication.setSize(ширина, висота);
// Установка положення фрейма
windowForApplication.setLocation(x, у);
// Зробити фрейм видимим
windowForApplication.setVisible(true);
...
// Метод init()
public void init()
// Ініціалізація аплета
// Метод paint()
public void paint(Graphics g)
// Первинне промальовування вікна аплета
// або додатки
}
class ApplicationFrame extends Frame
{
// Оголошення змінної класу AppletAndApplication
private AppletAndApplication appletFrame;
// Конструктор класу ApplicationFrame
public ApplicationFrame(String frameName)
// Виклик конструктора класу Frame
super(frameName);
// Додавання блоку прослуховування вікна
addWindowListener(
new WindowAdapter()
// Обробка закриття вікна
public void windowClosing
(WindowEvent e)
{
...
// Зупинка аплета
appletFrame.stop();
// Знищення аплета
appletFrame.destroy();
// Завершення програми
System.exit(0);
);
// Створення нового об'єкту
// класу AppletAndApplication
appletFrame = new AppletAndApplication ();
// Ініціалізація аплета
appletFrame.init();
// Запуск аплета
appletFrame.start();
// Додавання аплета у фрейм
add(appletFrame);
}
3.2. Вставка зображення в графічний додаток
Для вставки зображення в графічні додатки використовуються методи
public abstract Image getImage(String filename)
public abstract Image getImage(URL url)
класу Toolkit з пакету java.awt.
Звернення до цих методів з компоненту виконується через метод
public Toolkit getToolkit()
класу Component, наприклад:
Image img =
getToolkit().getImage("D:\images\myimage.gif");
У загальному випадку звернення можна зробити через статичний метод
public static Toolkit getDefaultToolkit()
класу Toolkit, наприклад:
Image img =
Toolkit.getDefaultToolkit().getImage("D:\images\myimage.gif");
Але, окрім цих методів, клас Toolkit містить п'ять методів createImage(), що повертають посилання на об'єкт типу Image. Звичайно використовуються методи:
public abstract Image createImage (String fileName) - створює зображення з вмісту графічного файлу filename;
public abstract Image createImage (url address) - створює зображення з вмісту графічного файлу за адресою address.
Створене зображення так само, як і в аплеті, виводиться на екран одним з перенавантажуваних методів drawImage() класу Graphics.
3.3. Компоненти управління AWT і обробка подій
Разом із засобами малювання, використання кольорів і шрифтів в пакеті java.awt визначені також елементи управління.
Елементи управління (controls) - це компоненти, які надають користувачу різні способи взаємодії з додатком. Ці елементи реалізовані в наступних класах пакету java.awt:
Клас Button - кнопки;
Клас Label - текст;
Клас Checkbox - прапорці і перемикачі;
Клас Choice - списки, що розкриваються;
Клас List - списки;
Клас TextField - рядки введення;
Клас TextArea - поля введення;
Клас ScrollBar - смуги прокрутки;
Клас Canvas - малюнки.
На відміну від низькорівневих подій, семантичні події для компонент AWT визначаються для класів. Оскільки в інтерфейсах для семантичних подій визначений тільки один метод, тому для елементів управління немає необхідності у використанні абстрактних класів-адаптерів, як для низькорівневих подій.
3.3.1. Інтерфейс ActionListener і клас ActionEvent
Для класів Button, List і TextField визначений блок прослуховування ActionListener з єдиним методом
public void actionPerformed(ActionEvent e)
що викликається, коли відбувається дія для заданого об'єкту класу Button, List або TextField.
Клас ActionEvent обробляє події, пов'язані з натисненням кнопки, вибором елементу із списку або з натисненням клавіші Enter в текстовому полі.
Для класу ActionEvent визначені наступні статичні final змінні типу int:
ACTION_PERFORMED - дія відбулася;
ALT_MASK - натиснута клавіша Alt;
SHIFT_MASK - натиснута клавіша Shift;
CTRL_MASK - натиснута клавіша Ctrl;
ACTION_FIRST - перший номер в списку ідентифікаторів, використовуваних для подій дії;
ACTION_LAST - останній номер в списку ідентифікаторів, використовуваних для подій дії.
Методи
public String getActionCommand()
public int getModifiers()
public long getWhen()
public String paramString()
дозволяють одержати відповідно командний рядок, пов'язаний з даною дією; ключ-модифікатор для даної дії; час лічильника (у мілісекундах) для даної дії і рядок параметра, що ідентифікує дану дію (звичайно використовується для відладки).
3.3.2. Інтерфейси ItemListener, ItemSelectable і клас ItemEvent
Для класів Choice, Checkbox і List визначений блок прослуховування ItemListener з єдиним методом
public void itemStateChanged(ItemEvent e)
що викликається, коли відбувається вибір або відміна вибору елементів в об'єктах класу Choice, Checkbox або List.
Клас ItemEvent містить змінні і методи для обробки події, пов'язані з вибором елементу або відміною вибору елементу.
Для класу ItemEvent визначені наступні статичні final змінні типу int:
SELECTED - елемент вибраний;
DESELECTED - вибірка елементу відмінена;
ITEM_STATE_CHANGED - стан елементу змінений;
ITEM_FIRST - перший номер в списку ідентифікаторів, використовуваних для подій вибору елементу;
ITEM_LAST - останній номер в списку ідентифікаторів, використовуваних для подій вибору елементу.
Методи
public Object getItem()
public int getStateChange()
public String paramString()
дозволяють одержати відповідно елемент, що викликав подію; зміну стану елементу (вибраний або не вибраний) і рядок параметра, що ідентифікує вибір елементу (звичайно використовується для відладки).
Метод
public ItemSelectable getItemSelectable()
повертає об'єкт інтерфейсу ItemSelectable. Цей інтерфейс призначений для об'єктів, в яких допустимо вибір одного або більш елементів, і містить оголошення методів
public void addItemListener(ItemListener l)
public void removeItemListener(ItemListener l)
для додавання і видалення блоків прослуховування вибору або відміни вибору елементів із списку, а також метод
public Object[] getSelectedObjects(),
який повинен повертати масив вибраних об'єктів або null, якщо не вибрано жодного об'єкту.
3.3.3. Обробка семантичних подій
Включення блоку прослуховування, як і для низькорівневих подій, виконується за допомогою відповідного методу addXXXX(), наприклад, addActionListener(). Для операції включення необхідно вказати, для якого об'єкту AWT додається даний блок прослуховування, причому звичайно, як і для адаптера, метод блоку прослуховування перевизначається безпосередньо в параметрі відповідного методу addXXXX(), наприклад:
Button myButton;
myButton.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// Оператори, що реалізовують обробку натиснення
// кнопки myButton
}
}
);
Для завдання кольору переднього плану (кольори тексту), кольори фону і шрифту написів для елементів управління AWT можна використовувати відповідно методи
public void setForeground(Color з)
public void setBackground(Color з)
public void setFont(Font f).
Набути цього значення для елементу управління можна за допомогою методів
public Color getForeground()
public Color getBackground()
public Font getFont().
3.4. Клас Label
Текст (Label) є простим компонентом AWT. Він є інформаційним текстовим рядком. Для класу Label в AWT не визначено ніяких подій.
· Для створення інформаційного рядка можна використовувати один з трьох конструкторів:
· public Label()
· public Label(String text)
· public Label(String text, int alignment)
· Перший конструктор створює порожній рядок, другий - рядок із заданим в параметрі text текстом, а третій вирівнює створений рядок за допомогою параметра alignment. Для завдання вирівнювання при створенні об'єкту можна використовувати як значення другого параметра статичні змінні класу Label: LEFT, RIGHT і CENTER.
· Вирівнювання тексту можна змінити за допомогою методу:
public void setAlignment(int alignment).
· Щоб дізнатися, яке вирівнювання в даний момент встановлене, застосовується метод
public int getAlignment().
· Можна змінити текст в інформаційному рядку методом
public void setText(String text)
або прочитати текст з об'єкту Label за допомогою методу
public String getText().
3.5. Клас Button
Кнопки (Buttons) використовуються в панелях інструментів, діалогових вікнах, звичайних вікнах і навіть в інших компонентах, наприклад, смугах прокрутки.
· Створення кнопки з написом здійснюється за допомогою конструктора:
public Button(String label)
де параметр label задає текст, який буде виведений на кнопці.
Для створення кнопки без тексту треба використовувати конструктор без параметрів:
public Button()
· Після створення кнопки її необхідно додати в контейнер. Оскільки будь-який аплет вже є контейнером, можна додати кнопку безпосередньо в аплет або графічний додаток.
· Для зміни напису на кнопці необхідно використовувати метод:
public void setLabel(String label)
· Прочитати поточний напис можна за допомогою методу
public String getLabel().
· Метод
public void setActionCommand(String command)
дозволяє встановити ім'я команди для події пов'язаного з цією кнопкою. Якщо command задане рівним null, або ім'я команди для кнопки не встановлене, то ім'я команди береться рівним напису на кнопці. При обробці події в методі actionPerformed() можна одержати ім'я заданої команди можна за допомогою приведеного вище методу getActionCommand().
Включение/выключения блоку прослуховування зміни стану списку, що розкривається, проводиться за допомогою методів класу Button:
public void addActionListener(ActionListener l)
public void removeActionListener(ActionListener l).
Обробка події, пов'язаної з натисненням кнопки, виконується за допомогою приведеного вище методу actionPerformed() інтерфейсу ActionListener.
3.6. Клас Checkbox
Прапорець (Checkbox) багато в чому схожий з кнопкою, але має два стани: встановлений і скинутий (так і ні). При кожному клацанні по прапорцю він змінює стан на протилежний.
Прапорець складається з тексту і стану. Текст - це рядок, який виводиться поряд з самим прапорцем, а стан - логічна змінна, вказуюча, встановлений прапорець або скинутий. У початковий момент прапорець скинутий, тобто стан має значення false.
Прапорець можна створити за допомогою одного з наступних конструкторів класу Checkbox:
public Checkbox() - створює прапорець без тексту;
public Checkbox(String label) - створює прапорець з текстом;
public Checkbox(String label, boolean state) - створює прапорець з текстом і спочатку заданим станом (true - прапорець включений, false - вимкнений);
Створивши об'єкт класу CheckboxGroup, можна поміщати в цю групу прапорці, передаючи об'єкт CheckboxGroup як параметр конструктору класу Checkbox за допомогою наступних конструкторів класу Checkbox:
public Checkbox(String label, CheckboxGroup group, boolean state) - створює прапорець з текстом, первинною установкою і вказівкою, до якої групи відноситься даний перемикач;
public Checkbox(String label, boolean state, CheckboxGroup group) - є варіантом попереднього конструктора.
При об'єднанні перемикачів в групу останній з перемикачів, створених з параметром true, матиме стан включений, інші - вимкнений.
Для отримання і установки напису для прапорців і перемикачів використовуються відповідно методи
public String getLabel()
public void setLabel(String label).
Методи
public boolean getState()
public void setState(boolean state)
використовуються відповідно для отримання і установки поточного стану прапорців і перемикачів.
Метод
public Object[] getSelectedObjects()
повертає масив завдовжки 1, що містить текст об'єкту Checkbox, якщо об'єкт вибраний або null, якщо об'єкт не вибраний.
Методи
public CheckboxGroup getCheckboxGroup()
public void setCheckboxGroup(CheckboxGroup g)
відповідно визначають або встановлюють групу для перемикачів.
Включение/выключения блоку прослуховування зміни стану списку, що розкривається, проводиться за допомогою методів класу Checkbox:
public void addItemListener(ItemListener l)
public void removeItemListener(ItemListener l).
Зміна стану прапорця пов'язана з класом ItemEvent. Для обробки події ItemEvent повинен бути реалізований інтерфейс ItemListener і визначений приведений вище метод itemStateChanged(). Включение/выключения блоку прослуховування для зміни стану прапорця проводиться за допомогою методів інтерфейсу ItemSelectable: addItemListener() і removeItemListener().
3.7. Клас Choice
Список (Choice), що розкривається, - це компонент, що забезпечує вибір текстового рядка з меню, що розкривається. Вибраний рядок відображається на екрані. Список, що розкривається, реалізується класом Choice.
Щоб створити меню для списку, що розкривається, слід спочатку створити об'єкт класу Choice. Єдиний конструктор цього класу
public Choice()
задає порожній список, наприклад:
Choice myChoice = new Choice();
Створивши список, що розкривається, можна додавати в нього рядки методом
public void add(String item)
(у кінець списку) або методом
public void insert(String <C:jdk1.3docsapijavalangString.html> item, int index)
(після заданого в параметрі індексу).
Одержати рядок списку в заданій позиції index можна за допомогою методу
public String getItem(int index).
Після додавання всіх елементів розкриваючого списку у виведення аплета або додатку за допомогою методу add() класу Container повинен бути доданий і сам список, наприклад
add(myChoice);
Можна також вказати (по індексу або за змістом), який рядок повинен бути спочатку вибрана:
public void select (int pos)
public void select(String str)
За допомогою методів
public void remove(int position)
public void remove(String item)
public void removeAll()
можна видалити відповідно елемент списку із заданим індексом position; елемент списку із заданим ім'ям item або всі елементи списку.
Для обробки події ItemEvent, пов'язаного з вибором елементу або елементів із списку, що розкривається, повинен бути реалізований описані вище інтерфейс ItemListener і метод itemStateChanged().
Обробка події ItemEvent проводиться за допомогою наступних методів класу Choice:
public int getItemCount() - повертає число елементів в списку, що розкривається;
public int getSelectedIndex() - повертає індекс вибраного елементу розкриваючого списку;
public String getSelectedItem() - повертає значення вибраного елементу розкриваючого списку;
public Object[] getSelectedIndex() - повертає масив об'єктів (завдовжки 1), що містить вибраний елемент розкриваючого списку.
Включение/выключения блоку прослуховування зміни стану списку, що розкривається, проводиться за допомогою методів класу Choice:
public void addItemListener(ItemListener l)
public void removeItemListener(ItemListener l).
3.8. Клас List
Клас List дозволяє створити список (List) значень, з яких можна вибирати одне або декілька. При необхідності (якщо список не поміщається повністю у виділеному полі) забезпечується прокрутка списку.
При створенні списків є дві можливості. Конструктор
public List()
створює список, який не дозволяє одночасно вибирати більше одного елементу.
Можна також встановити кількість елементів, які одночасно видно у вікні списку за допомогою конструктора
public List(int rows)
а також вирішити або заборонити вибирати декілька елементів одночасно з допомогою конструкторів:
public List(int rows, boolean multipleMode)
де параметр rows задає кількість видимих елементів, а параметр multipleMode указує, чи вирішувати вибір більш ніж одного елементу.
Можна також вставити елемент в певне місце списку за допомогою методу
public void add(String item, int index)
(елементи списку нумеруються з нуля).
Встановлення первинного стану елементу списку (вибраний або не вибраний) виконується за допомогою методів
public void select(int index)
і
public void deselect(int index)
(за умовчанням, елемент списку не вибраний).
Після додавання всіх елементів розкриваючого списку у виведення аплета або додатку за допомогою методу add() класу Container повинен бути доданий і сам список.
Іноді потрібний, щоб певний елемент був видно у вікні. Для цього слід передати індекс елементу методу
public void makeVisible(int index).
Отримання відомостей про список і його елементи проводиться за допомогою наступних методів:
public String getItem(int index) - повертає ім'я елементу списку із заданим індексом;
public String[] getItems() - повертає масив імен елементів списку;
public int getItemCount() - повертає кількість елементів в списку.
Так само, як і для класу Choice, за допомогою методів
public void remove(int position)
public void remove(String item)
public void removeAll()
можна видалити відповідно елемент списку із заданим індексом position; елемент списку із заданим ім'ям item або всі елементи списку.
Обробка подій, пов'язаних з вибором елементів списку може проводитися за допомогою реалізації інтерфейсу ItemListener в методі itemStateChanged() і/або за допомогою реалізації інтерфейсу ActionListener в методі actionPerformed().
Обробка події ItemEvent або ActionEvent проводиться за допомогою наступних методів класу List:
public int getSelectedIndex() - повертає індекс вибраного елементу списку;
public String getSelectedItem() - повертає значення вибраного елементу списку;
public String[] getSelectedItems() - повертає масив значень вибраних елементів списку;
public int getSelectedIndex() - повертає індекс вибраного елементу списку;
public int[] getSelectedIndexes() - повертає масив індексів вибраних елементів списку;
public Object[] getSelectedIndex() - повертає масив об'єктів, що містить вибрані елементи списку;
public boolean isIndexSelected(int index) - повертає значення true, якщо елемент з даним індексом вибраний і false інакше.
Включение/выключения блоку прослуховування проводиться за допомогою методів класу List:
public void addItemListener(ItemListener l)
public void removeItemListener(ItemListener l)
public void addActionListener(ActionListener l)
public void removeActionListener(ActionListener l).
3.9. Класи TextField і TextArea
Для введення рядка тексту AWT надає компонент поле введення (TextField), представлений класом TextField.
Простий спосіб створення поля введення - використання конструктора без параметрів
public TextField().
Він створює порожній рядок введення невизначеної довжини. Якщо потрібно задати число символів в рядку на екрані, можна скористатися іншим конструктором
public TextField (int columns).
Якщо ж потрібно створювати поля введення, які спочатку вже містять деякий текст, то можна скористатися конструктором
public TextField(String text).
І, нарешті, ще один конструктор
public TextField (String text, int columns)
дозволяє задати і початковий текст поля введення і число символів в рядку.
Додавання текстового поля в додаток або аплет виконується за допомогою методу add() класу Container.
У класі TextField визначені наступні методи:
public int getColumns() і public void setColumns(int columns) - отримання і установка кількості символів в текстовому полі;
public void setText(String text) - введення тексту в текстове поле;
public void setEchoChar(char з), public char getEchoChar() і public boolean getEchoCharsSet() - установка, отримання і перевірка символу луни, тобто символу, який виводитиметься в текстовому полі замість будь-якого символу, що вводиться (використовується для введення пароля).
Клас TextField може використовувати блок прослуховування KeyListener для обробки подій, пов'язаних з введенням символу в текстове поле, проте для нього звичайно використовується інтерфейс ActionListener для прослуховування подій, пов'язаних з натисненням клавіші Enter. Включення і виключення цього блоку прослуховування виконується за допомогою методів
public void addActionListener(ActionListener l)
public void removeActionListener(ActionListener l)
Конструктори створення областей введення практично співпадають з конструкторами створення поля введення за винятком того, що при завданні розміру поля введення необхідно задати не тільки число символів в рядку, але і число рядків.
Порожнє поле введення з невизначеними розмірами створюється конструктором
public TextArea().
Поле введення, що містить текст, створюється конструктором
public TextArea (String text).
Поле введення з фіксованими розмірами задається за допомогою конструктора
public TextArea(int rows, int columns).
Є також конструктор для створення поля введення фіксованих розмірів, що містить заданий текст
public TextArea (String text, int rows, int columns).
І, нарешті, конструктор
public TextArea (String text, int rows, int columns
int scrollbars)
додатково задає режими виведення смуг прокрутки, визначені в класі TextArea з допомогою наступні статичні final змінні типу int:
SCROLLBARS_BOTH - і горизонтальна і вертикальна смуги прокрутки;
SCROLLBARS_HORIZONTAL_ONLY - тільки горизонтальна смуга прокрутки;
SCROLLBARS_VERTICAL_ONLY - тільки вертикальна смуга прокрутки;
SCROLLBARS_NONE - без смуг прокрутки.
Додавання текстової області в додаток або аплет виконується за допомогою методу add() класу Container.
У класі TextArea визначені наступні основні методи:
public int getColumns() і public void setColumns(int columns) - отримання і установка кількості символів в текстовій області;
public int getRows() і public void setRows(int rows) - отримання і установка кількості рядків в текстовій області;
public void append(String text) - додавання тексту в кінець текстової області;
public void replaceRange(String str, int start, int end) - заміна тексту в області, починаючи з символу поля з індексом start і закінчуючи символом поля з індексом end.
Звичайно після заповнення всього текстового поля його вміст вводиться за допомогою кнопки (в цьому випадку за допомогою методу
public String getText()
класу Component можна одержати вміст текстового поля).
ЛАБОРАТОРНЕ ЗАВДАННЯ
Напишіть аплет на мові Java по одному з приведених нижче варіантів.
Варіант 2
Малювання прямокутників в графічному вікні. При натисненні кнопки миші фіксується лівий верхній кут прямокутника. При відпуску миші фіксується правий нижній кут прямокутника, і прямокутник промальовувався на екрані.
Постановка задачі індивідуального завдання.
import java.applet.*;
import java.awt.* ;
import java.awt.event.*;
public class AwtClass extends Applet implements MouseListener
{
private int X;
private int Y;
private static int _windowWidth = 600;
private static int _windowHeight = 600;
public static void main(String args[])
{
ApplicationFrame applicationWindow = new ApplicationFrame("APPLICATION");
applicationWindow.setSize(_windowWidth, _windowHeight);
applicationWindow.setLocation(0, 0);
applicationWindow.setVisible(true);
}
public void init()
{
// set background and other
this.setBackground(Color.WHITE);
this.setForeground(Color.DARK_GRAY);
this.addMouseListener( this );
}
public void paint(Graphics g) {}
public void mouseClicked(MouseEvent event){}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent event)
{
this.getGraphics().clearRect(0, 0, this._windowWidth, this._windowHeight);
this.X = event.getX();
this.Y = event.getY();
}
public void mouseReleased(MouseEvent event)
{
int endX = event.getX();
int endY = event.getY();
if ( endX < this.X )
{
int buffer = this.X;
this.X = endX;
endX = buffer;
}
if ( endY < this.Y )
{
int buffer = this.Y;