Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЕВ-4791

.pdf
Скачиваний:
24
Добавлен:
07.03.2016
Размер:
2.52 Mб
Скачать

f.addWindowListener (new WindowAdapter() { public void windowClosing(WindowEvent ev) {

System.exit(0); } } );

}

}

Приклад 4. Програма обробки подій. import java.awt.*;

import java.awt.event.*;

class ListTest extends Frame { ListTest (String s) {

super(s);

setLayout(null);

setFont (new Font(“Serif”, Font.BOLD, 15));

Label ll = new Label (“Вибери товар:”, Label.CENTER); ll.setBounds(10, 50, 120, 30); add(ll);

Label l2 = new Label (“Обери спосіб оплати”); L2.setBounds(170, 50, 200, 30); add(l2);

List l = new List (2, true); l.add (“Книги”);

l.add (“Диски”); l.add (“Іграшки”);

l.setBounds(20, 90, 100, 40); add(l); Choice ch = new Choice();

ch.add (“Поштовим переказом”); ch.add (“Кредитною карткою”); ch.setBounds(170, 90, 200, 30); add(ch); Button b1 = new Button (“Продовжити”);

b1.set Bounds(30, 150, 100, 30); add(b1); Button b2 = new Button (“Відмінити”); b2.set Bounds(140, 150, 100, 30); add(b2); Button b3 = new Button (“Вийти”); b3.set Bounds(250, 150, 100, 30); add(b3); setSize(400, 200);

setVisible(true);

}

public static void main (String[] args) {

Frame f = new SimpleComp (“Прості компоненти”); f.addWindowListener (new WindowAdapter() {

public void windowClosing(WindowEvent ev) { System.exit(0); }

} );

}

}

Приклад 5. Програма формування елементів графічного інтерфейсу. import java.awt.*;

import java.awt.event.*;

class TextTest extends Frame { TextTest (String s) {

super(s);

setLayout(null);

setFont (new Font(“Serif”, Font.PLAIN, 14)); Label ll = new Label (“Ваше ім’я:”, Label.RIGHT); ll.setBounds(20, 30, 70, 25); add(ll);

Label l2 = new Label (“Пароль:”,Label.RIGHT); l2.setBounds(20, 60, 70, 25); add(l2);

111

TextField tf1 = new TextField(30); tf1.setBounds(100, 30, 160, 25); add(tf1); TextField tf2 = new TextField(30); tf2.setBounds(100, 30, 160, 25); add(tf2); tf2.setEchoChar(‘*’);

TextField tf3 = new TextField(“Введіть сюди Вашe замовлення”, 30); tf3.setBounds(10, 100, 250, 30); add(tf3);

TextArea ta = new TextArea (“Ваше замовлення:”, 5, 50, TextArea.SCROLLBARS_NONE);

ta.setEditable(false);

ta.setBounds(10, 150, 250, 140); add(ta); Button b1 = new Button (“Продовжити”);

b1.setBounds(280, 180, 100, 30); add(b1); Button b2 = new Button (“Відмінити”); b2.setBounds(280, 220, 100, 30); add(b2); Button b3 = new Button (“Вийти”); b3.setBounds(280, 260, 100, 30); add(b3); setSize(400, 300);

setVisible(true);

}

public static void main (String[] args) {

Frame f = new SimpleComp (“Поля введення”); f.addWindowListener (new WindowAdapter() {

public void windowClosing(WindowEvent ev) { System.exit(0); }

} );

}

}

14.2. Перелік завдань для опрацювання самостійної роботи

Навчальні завдання

1.Створити аплет/додаток. Розмістити на формі текстове поле і три кнопки. При натисканні кожної кнопки в текстовому полі має з’явитися текст, який є унікальним для кожної кнопки.

2.До створеного аплета вправи 1 додати прапорець. Опрацювати його подію і розмістити

втекстовому полі відповідний текст.

3.Створити аплет/додаток і додати на форму всі компоненти, які визначають метод addActionListener(). Зареєструвати «слухача» для всіх компонентів і вивести повідомлення про кожну подію у спеціальному текстовому полі.

4.Створити аплет/додаток з кнопкою JButton і текстовим полем JTextField. Написати і приєднати привабливого «слухача» подій так, щоб при отриманні кнопкою фокуса всі символи, які вводяться з клавіатури, з’являлися в текстовому полі JTextField.

5.Створити аплет/додаток, в якому додати в головному меню всі компоненти, включно меню і діалоговими вікнами.

6.Знайти та завантажити з Інтернету один або кілька безкоштовних будівників користувацького інтерфейсу. Додати компонент BangBean в це середовище програмування.

7.Успадкувати новий тип кнопки від кнопки JButton. Щоразу при натисканні кнопки вона має змінювати свій колір на інший, який обирається випадково.

8.Модифікувати програму (приклад 9 пункту 13.2) так, щоб вона використовувала меню з перемикачами замість меню із прапорцями.

9.У HTML-документації для пакета javax.swing знайти опис класу JColorChooser, який являє собою діалог для вибору кольору. Написати програму із кнопкою, при натисканні на яку виводиться цей діалог.

10.Практично всі компоненти бібліотеки Swing успадковані від класу Component, в якому є метод setCursor(). Створити аплет і поміняти в ньому курсор миші, використовуючи один із перевизначених курсорів класу Cursor.

Рекомендована література [3-6, 9-12].

112

Тема 15. ГРАФІЧНИЙ ІНТЕРФЕЙС КОРИСТУВАЧА

Вивчивши матеріал теми, студенти знатимуть:

зовнішні та внутрішні прояви опрацювання подій;

визначення основних складових події;

які параметри використовують при створенні подій;

технологію опрацювання різноманітних подій;

шляхи формування власних подій;

механізм опису подій у програмах;

процеси впровадження будь-якого типу події. Вивчення матеріалу теми допоможе студентам:

користуватися бібліотекою Swing;

формувати обробник конкретної події;

залучати типи подій і слухачів;

використовувати модель подій бібліотеки Swing;

опрацювати кілька подій одночасно.

15.1.Навчальні завдання для опрацювання практичної роботи

Мета роботи: закріпити теоретичні знання механізму створення графічного інтерфейсу користувача та визначати практичну сутність їх.

План

1.Техніка програмування графічного інтерфейсу користувача.

2.Динамічне зв’язування подій.

3.Розрізнення обчислення та інтерфейсу користувача.

4.Канонічна форма користувацького інтерфейсу.

5.Візуальне програмування та його особливості.

6.Характеристика компонентів JavaBeans.

7.Складні компоненти Bean та їх підтримка.

8.Можливості використання компонентів Bean у багатозадачному оточенні.

15.2. Перелік завдань та послідовність виконання лабораторної роботи

Лабораторна робота

«Побудова інтерфейсу користувача за допомогою пакета JFC Swing»

Мета роботи: Поглибити і закріпити теоретичні знання:

сутності компонентів АРІ;

структури процесу формування панелей інструментів;

написання аплетів із використанням класів бібліотеки Swing;

особливостей використання різноманітних компонентів;

засобів управління формуванням подій та блоків прослуховування;

джерел подій та механізмів їх опрацювання.

Шляхи досягнення мети:

1.Провести десятихвилинне опитування, з’ясувати рівень засвоєння студентами термінів і понять цієї теми.

2.Розробити структуру інтерфейсу із залученням інструментів пакета JFC Swing для конкретної прикладної задачі.

3.Виконати аналіз виконання запропонованої викладачем задачі з інтерфейсним блоком.

4.Скласти звіт з лабораторної роботи і захистити його.

Інформаційне забезпечення

1.Перелік завдань для виконання лабораторної роботи (пункт 3.2 блоки 2, 3).

2.Програмне середовище JDK.

3.Бібліотека JFC Swing.

113

15.3. Завдання для опрацювання самостійної роботи

Навчальні завдання

1.Надати характеристику пакета JFC Swing.

2.Опанувати основні компоненти АРІ:

клас JPanel;

опрацювання відображень;

розміщення надписів;

клас JButton;

використання об’єктів JCheckBox;

клас JradioButton-перемикач;

фіксація стану;

робота з текстом;

панелі інструментів та спливаючі підказки;

панель з кількома вкладеннями.

3. Додаткові компоненти бібліотеки Swing:

особливості компоновки ScrollPaneLayout компонента JScrollPane;

особливості компоновок ViewportLayout та OverlayLayout;

компонент Box і компоновка BoxLayout.

4. Події та блоки прослуховування бібліотеки Swing:

характеристика подій бібліотеки Swing;

блоки прослуховування подій Swing;

джерела подій бібліотеки Swing.

15.4.Завдання для відпрацювання індивідуальної роботи

Індивідуальна робота студентів з цієї теми передбачає виконання схеми створення користувацького інтерфейсу засобами JBuilder. Результати дії запропонованого прикладу слід оформитиу вигляді звіту.

Створення користувацького інтерфейсу на базі JFrame та JPanel

1.Відкрийте фрейм FrmMain та відобразіть вкладену Design на панелі Component.

2.Оберіть компонент StatusBar і задайте у вікні Inspector значення властивості Border рівним LoweredBevel. У результаті в тілі методу jbInit() з’явиться код:

statusBar.setBorder(BorderFactory.createLoveredBevelBorder()).

3.Знищіть другу кнопку на панелі інструментів (jButton2), обравши її і натиснувши

<delete>. Змініть ім’я jButton1 на jButtonBrowseCourses.

4.На вкладці Swing Containers палітри компонентів оберіть JSplitPane і перемістіть його

уцентр вікна.

5.На вкладці Swing палітри компонентів оберіть JTree і перетягніть його до контейнеру

JSplitPane.

6.Оберіть компонент Jtree, щоб відобразити його властивості у вікні Inspector. Змініть ім’я компоненти на JTreeCourses.

7.У вікні Inspector задайте властивості JSplitPane: Name — JSplitPane dividerLocation — 120. У результаті в тілі методу jbInit() з’явиться код:

JSplitPane.setDividerLocation(120).

8.У вікні Inspector вкажіть, що компонент JTreeCourses має розміщуватися ліворуч. Тоді в тілі методу jbInit() з’явиться код:

JSplitPane.add(JTreeCourses, JSplitPane.LEFT).

9.Створіть меню. На вкладці Designer двічі натисніть на компоненті jMenuBar1, щоб завантажити Menu Designer. Додайте новий елемент JMenu, для чого введіть у Menu Designer

значення Browse Courses.

10.Натисніть на jMenuFile, щоб відкрити в Menu Designer значення Browse Courses.

11.Змініть ім’я об’єкта JMenu в jMenuFileBrowseCourses. Перетягніть його в jMenuFileExit.

Включіть роздільникміж jMenuFileBrowseCourses та jMenuFileExit. Готовеменюматиме вигляд.

12.Створіть підклас класу JPanel. Виберіть Fale —>New Class. У полі Package задайте com.sams.chalktalk.client.swing, у полі клас Class name — ContentPanel і в полі Base class — javax.swing.JPanel. В області Options встановіть прапорці опцій.

114

13.У вікні Designer задайте значення властивості toolTipText для ContentPanel рівним «ContentPanel». У результаті в тілі методу jbInit() з’явиться код:

this.setToolTipText(«ContentPanel»).

14.На вкладці додайте до класу ContentPanel метод, код якого наведено далі:

public void render(Object model) { }

15.Запустіть проект. Якщо є помилки, їх слід виправити.

16.Створіть підклас ContentPanel. Знову викличте Class Wizard. У полі Package задайте com.sams.chalktalk.client.swing, у полі клас Class name — CoursePanel і в полі Base class — com.sams.chalktalk.client.swing.ContentPanel. В області Options встановіть прапорці опцій.

17.Встановіть значення властивості Layout панелі (this) рівним null. У результаті в тілі методу jbInit() з’явиться код:

this.setLayout(null).

18.На вкладці Swing оберіть JLabel і чотири рази перетягніть його на панель JPanel. Потім оберіть JTextField і тричі перетягніть його на JPanel.

І зрештою, перетягніть із вкладки Swing Containers елемент JScrollPane та включіть у нього JTextArea (вкладенка Swing). За допомогою миші розмістіть елементи та встановіть їхні розміри.

19.Збережіть результати роботи Fale —> Save All.

15.5.Контрольне тестування знання теми

ТЕСТ 1

Заповніть пропуски у ствердженнях:

1)Метод ____________ викликається, коли зміщується миша і слушник подій, що опрацьовує цю подію, зареєстрований.

2)Текст, який не може бути змінений користувачем, називають ___________ текстом.

3)_______________ упорядковує компоненти графічного інтерфейсу користувача в контейнері.

4)Метод add, призначений для додавання компонентів графічного інтерфейсу користувача в контейнер, є методом класу _____________.

5)GUI — це акронім ____________________________________________.

6)Метод ______________ використовують для визначення в контейнері адміністатора розміщення.

7)Виклику методу mouseDragged передує виклик методу ____________;

після завершення методу mouseDragged викликається метод ___________________.

Визначте, чи правильним є твердження:

1)BorderLayout — це заданий за замовчуванням адміністратор розміщення контейнеру.

2)Коли курсор миші зміщується в межах компоненти графічного інтерфейсу користувача, викликається метод mouseOver.

3)Компонент JPanel не може бути доданий в інший компонент JPanel.

4)Якщо в менеджері розміщення BorderLayout в область NORTH додаються дві кнопки, то вони будуть розміщені поряд.

5)Менеджер розміщення BorderLayout допускає використання максимум п’яти компонентів.

Знайдіть помилку в кожному із наведених далі фрагментів програми:

1) buttonName = JButton («Підпис»);

2) JLabel aLabel, JLabel; //Створення посилань

3)txtField = new JtextField (50, «Текст за замовчуванням»);

4)Container container = getContentPane();

setLayout( new BorderLayout() ); button1 = new JButton(“North Star ”); button2 = new JButton(“ South Pole ”); container.add(button1); container.add(button2);

115

ТЕСТ 2

Заповніть пропуски у твердженнях:

1)Клас ________________ використовують для створення меню.

2)Метод ______________ розміщує в меню рядок-роздільник.

3)Передання значення false в метод ____________ класу TextArea захищає текст від змін, які можуть бути зроблені користувачем.

4)Події компонента JSlider опрацьовують методом ___________ інтерфейсу _________.

5)Змінна ______________ екземпляра класу GridBagConstraints за замовчуванням набуває значення CENTER.

Визначте, чи правильним є твердження:

1)Коли в програмі створюють об’єкт JFrame, то як мінімум одне меню має бути створене і додане до JFrame.

2)Змінна fill є змінною екземпляра класу GridBagConstraints.

3)Об’єкти JFrame і аплети не можна використовувати разом в одній програмі.

4)Лівий верхній кут об’єкта класу JFrame або аплета мають координати (0, 0).

e)Текст, розміщений в обєкті класу JTextArea, завжди має статус «тільки для читання».

f)Клас JTextArea є прямим нащадком класу JComponent.

g)За замовчуванням воб’єктах класу Box використовують менеджеррозміщення BoxLayout.

Знайдіть помилку в кожному із наведених далі фрагментів програми:

1)JMenubar b;

2)mySlider = JSlider (1000, 222, 100, 450);

3)gbc.fill = GridBagConstraints.NORTHWEST;

4)

public void paintcomponent( Graphics g) { g.drawString(“Hello”, 50, 50)

}

5)

JFrame f = new JFrame (“A Window”);

 

f.setVisible( true);

 

Рекомендованалітература [6,7, 9-13].

116

Тема 16. ОРГАНІЗАЦІЯ БАЗ ДАНИХ І ДОСТУПУ ДО НИХ

Вивчивши матеріал теми, студенти знатимуть:

можливості використання пакета JDBC;

визначення основних складових реляційних баз даних;

які параметри необхідні для створення нових баз даних і таблиць;

технологію вставки, усунення й оновлення рядків таблиць;

шляхи формування запитів;

механізм створення потужних запитів за допомогою вкладених виразів;

процеси підключення до бази даних за допомогою JDBC.

Вивчення матеріалу теми допоможе студентам:

класифікувати драйвери з’єднання із базами даних;

аналізувати функціональні можливості пакета JDBC;

виявляти особливості створення нових баз даних і таблиць;

розробляти потужні запити за допомогою вкладених виразів;

підключатися до бази даних за допомогою JDBC.

16.1.Навчальні завдання для виконання практичної роботи

Мета роботи: закріпити на практиці теоретичні знання механізмів організації баз даних, наповнення і доступу до них та визначати їхню практичну доцільність.

План

1.Техніка залучення мови структурованих запитів SQL.

2.Створення запиту: список аргументів команди SELECT.

3.Виконання запитів на вибірку інформації з таблиць баз даних.

4.Об’єднання кількох таблиць:

природне та еквівалентне об’єднання;

тета-об’єднання для створення удосконалень запитів;

складні запити за рахунок самооб’єднання.

5.Виконання багатотабличного запиту.

6.Підключення до реляційних баз даних з коду Java-додатка:

робота із класом DriverManager;

завантаження драйверів;

умови використання методів об’єкта Statement.

16.2.Завдання та технологія виконання лабораторної роботи Лабораторна робота

«Організація формування таблиць баз даних»

Мета роботи: поглибити і закріпити практичні знання з:

сутності формування баз даних;

структури процесу створення таблиць;

функцій вставки, усунення та поновлення рядків;

створення запитів різноманітної структури;

засобів підключення до бази даних за допомогою JDBC;

результату управління об’єктом Statement.

План заняття

1.Провести десятихвилинне опитування, з’ясувати рівень засвоєння студентами термінів

іпонять цієї теми.

2.Розробити структуру таблиць баз даних для конкретної прикладної задачі.

3.Проаналізувати виконання запропонованої викладачем задачі із формуванням бази даних.

4.Скласти звіт з лабораторної роботи і захистити його.

117

Інформаційне забезпечення

1.Перелік завдань для виконання лабораторної роботи (пункт 3.2 блоки 1, 2, 3).

2.Програмне середовище JDK, JBuilder.

3.Бібліотека JFC Swing.

4.Драйвери JDBC.

16.3.Демонстрація навчального прикладу для індивідуального опрацювання

Метою цього прикладу є демонстрація розробленого програмного продукту, здатного автоматизувати процес формування бази даних викладачів та аналізувати кожного з них за сімейним станом (діаграма стану).

Формування бази даних

Для роботи із базою даних було обрано СУБД HyperSQL (HSQLDB). HSQLDB повністю написана мовою Java й має невеликий розмір (hsqldb.jar — близько 600 кБ). Може використовуватися і як окремий сервер з підтримкою мережевих з’єднань за допомогою JDBC, так і у вигляді бібліотеки для використання безпосередньо в коді програми. У даному разі обрано першу позицію, оскільки передбачалося, що програму використовуватимуть як переносну, а отже, база даних має працювати незалежно від наявності Інтернету. Головне вікно зображено на рис. 16.1.

Рис. 16.1. Головне меню формування бази даних

Цей спосіб, а саме користування графічним інтерфейсом, є першим, другий спосіб — використання бібліотеки HSQL у консольному вигляді. Було обрано саме другий спосіб, оскільки стуктура бази даних дуже проста, і база створюється при першій спробі до неї звернутися. Отже, за допомогою окремого класу було створено базу даних. Код програми створення бази даних наведено в підрозділі Текст програми.

Опрацювання запитів

За допомогою запитів до бази даних інтерфейсна частина програмного комплексу забезпечується інформацією, необхідною для роботи з програмним продуктом та отримання даних аналізу.

У даному програмному комплексі реалізовано доповнення (INSERT), вилучення (DELETE), зміна (UPDATE) та вибірка з бази даних (SELECT). Дані маніпуляції також необхідні для зручного користування кінцевим користувачем.

118

Текст запитів:

Доповнення

"INSERT INTO prof (pib, kaf, rn, stag, simp) VALUES(‘" + t_pib.getText() + "‘, ‘" + t_kaf.getText() + "‘, " + t_rn.getText() + " ," + t_stag.getText() + " , ‘" + c_simp.getSelectedItem() +"‘)";

Вилучення

"DELETE FROM prof where pib = ‘" + s + "‘";

Зміна

"UPDATE prof SET kaf = ‘" + t_kaf.getText() + "‘, rn = " + t_rn.getText() + ", stag = " + t_stag.getText() + ", simp = ‘" + c_simp.getSelectedItem() + "‘ WHERE pib = ‘" + pib + "‘";

Вибірка

"SELECT pib, kaf, rn, stag, simp FROM prof";

Інтерфейс та робота програми

Інтерфейсна частина є однією з найважливіших при проектуванні програмного продукту, бо від неї залежить зручність користування кінцевим користувачем.

У даному випадку інфтерфейс складається із чотирьох вікон для забезпечення всіх манюпуляцій із базою даних, і графічного аналізу.

Запуск програми відбувається за допомогою *.jar файла, куди запаковано всі сторонні бібліотеки й інші ресурси. Після запуску отримуємо вікно, зображене на рис.16.2.

Рис. 16.2. База даних викладачів

Це вікно є стартовим, у ньому вміст бази даних у вигляді таблиці, а також міститься поле для вилучення чи зміни даних.

Вікно доповнення бази даних викликається із меню бара в розділі Правка, яке зображено на рис.16.3.

Рис.16.3. Вікно доповнення бази даних

119

Як уже зазначалося, вилучення та зміна даних відбувається із головного меню. Тут також реалізований діалог у разі введення прізвища викладача, відсутній у базі даних (рис.16.4).

Рис.16.4. Діалог з базою даних

Вікно зміни даних виглядає так (рис.16.5).

Рис.16.5. Процедура коригування даних

120