
ЕВ-4791
.pdf
Рис. 5.16. Характеристика властивості Line вкладенки Border
• Змінити менеджер розкладки (властивість layout) для панелі null.
Крок 4-й. Додавання компонентів на панель.
Тепер будемо використовувати палітру компонентів для додавання компоненту JLabel зверху компонента JPanel.
• Виділити закладку Swing палітри компонентів і натисніть компоненту JLabel.
Рис. 5.17. Закладка Swing палітри компонентів JLabel
•Розмістити компонент на панель JPanel1 вашого вікна. Для цього використовуйте один
знаступних методів:
—клацніть на компоненту JPanel1 у вікні дерева компонентів. Це дозволить помістити компонент JLabel у лівий верхній кут панелі;
—клацніть панель JPanel1 у вікні дизайнера. Лівий верхній кут компонента JLabel буде
втому місці, де ви клацнули.
—клацніть у центрі компонента JLabel і перетягніть його в центр панелі.
Пам’ятайте, що компонент JLabel додано поверх панелі, а не поверх вікна. Якщо ви кинули компонент в інше місце, то виділіть JLabel1 в дереві компонентів і натисніть на клавіатурі кнопку Del для видалення (рис. 5.18). Перевстановити компонент.
31

Рис. 5.18. Дерево компонентів JLabel
Виберіть компонент JLabel1 і виконайте такі:
—Двічі клацніть у колонці об’єктного інспектора праворуч від властивості text. Введіть текст «Hello World!». Якщо текст не помістився повністю в компоненті, розтягніть його мишкою.
—Клацнути праворуч від властивості font і клацніть по кнопці [...], щоб відкрити вікно зміни шрифту (рис. 5.19).
Рис. 5.19. Вікно зміни шрифту
—Виберіть шрифт SansSerif і розмір 22. Клацніть ОК, щоб прийняти зміни. Якщо текст не видно повністю, знову розтягніть компонент.
—Виберіть властивість foreground і змініть колір на червоний (Red).
Вікно виглядає так, як показано на рис. 5.20. У вас же має вийти щось схоже:
Рис. 5.20. Вікно результату дії проекту
32

Виберіть з меню File | Save All, щоб зберегти увесь проект.
Крок 5-й. Редагування початкового тексту.
Тут ми спробуємо змінити інформацію з вікна «About» безпосередньо. Для цього двічі клацнути на файлі FirstProjectFrame_AboutBox.java, щоб відкрити його у вікні вмісту. Знайдіть у вихідному коді рядок « String version =" 1.0 " ; ». Змініть версію 1.0 на 2.0.
Перейдіть на закладку Design і ви візуально побачите зміни, зроблені вручну. Відкрийте програму і подивіться на зроблені зміни.
Крок 6-й. Створення обробника подій.
Тепер додамо другий компонент до нашої форми.
Знову відкрийте файл FirstProjectFrame.java і перейдіть на закладку Design.
Клацніть компоненту JButton, що на закладці Swing, і помістіть його на JPanel1. Компонент JButton4 буде додано до дерева компонентів.
Виділіть компонент JButton4 і змініть в об’єктних інспектора властивість Text на
Push Me.
Перейдіть на закладку Events об’єктного інспектора, щоб визначити, що відбуватиметься, коли натискається кнопка.
Двічі клацніть у колонці праворуч від рядка ActionPerformed. JBuilder автоматично перейде в редактор вихідного коду, де наступний код буде додано на подію ActionPerformed:
void jButton4_actionPerformed (ActionEvent e) {
}
Тепер можна ввести код, який буде виконуватися по цій події. Модифікуйте створений код до такого:
void jButton4_actionPerformed (ActionEvent e ) { jLabel1.setForeground ( new Color (255,0,0));
}
Тепер, якщо запустити додаток і натиснути кнопку, то текст «Hello World !» зміниться на синій колір.
Крок 7-й. Підготовка додатка до розгортання.
Наступні заняття відносяться до JBuilder Professional або Enterprise. Якщо у вас інша версія, то створення прикладу закінчено, тому що у вас не буде можливості розгорнути програму.
Майстер розгортання (Deployment Wizard ) (рис. 5.21) збирає всі необхідні вашій програмі файли, і якщо вибрати архівний тип, то архівує їх у JAR файл.
Для доставки програми:
• Виберіть меню Wizard | Deployment для відкриття майстра розгортання.
Рис. 5.21. Дії майстра розгортання (крок 1)
33

Переконайтеся, що всі об’єкти виділені в дереві Dependency tree.
•Властивість Archive type залиште за замовчуванням — Compressed JAR.
•У властивості Output file перейменуйте файл Untitled.jar в FirstProject.jar.
•Клацніть Next, щоб майстер перевірив залежності. На наступному кроці можна додавати і видаляти файли.
•На другому кроці приберіть галочку з пункту javax (рис.5.22).
Рис. 5.22. Дії майстра розгортання (крок 2)
— Натисніть Finish, щоб закінчити розгортання проекту.
Для запуску програми з архіву виконати таку команду java -jar FirstProject.jar
Рекомендована література [3-8].
34
Тема 6. УПРАВЛІННЯ ПЕРЕБІГОМ ДІЙ ОПЕРАТОРІВ ПРОГРАМИ
Вивчивши матеріал теми, студенти знатимуть:
—особливості використання операторів Java;
—технологію управління виконанням програми мовою Java;
—як створювати об’єкти;
—операції із примітивними типами і масивами;
—області бачення і знищення об’єктів;
—як створювати власні конструкції;
—функції, параметри і значення різних типів змінних;
—коментарі та вбудовану документацію.
Вивчення матеріалу теми допоможе студентам:
•використовувати операції мови Java;
•аналізувати результати дії операторів мови Java;
•виявити недоліки й імовірні помилки за результатами дії операторів;
•розробляти заходи з коригування наявних операторів;
•виконувати процедуру управління програмою.
6.1. Навчальні завдання для виконання практичної роботи
Мета роботи: сформувати практичні навички використання фундаментальних операцій мови Java, визначити технологію управління виконанням програм простої структури.
План
1.Оператори мови Java та особливості використання їх.
2.Операції та подання: пріоритетність операцій, уніарні та бінарні.
3.Операції з різними числами, наведення типів.
4.Сумісність імен у разі виклику методів.
5.Типові операції для примітивних змінних Java.
6.Автоматичний приріст та зменшення. Оператори порівняння.
7.Цикли. Складні цикли. Ключові слова break i continue.
8.Оператор switch та подробиці обчислень.
9.Оператори управління в Java: вирази відношень.
6.2.Завдання для опрацювання самостійної роботи
Навчальні завдання
1.Маємо два вирази: а) A=X + Y – 2/2 + Z; б) A=X + (Y – 2)/(2 + Z).
Скласти дві програми з включенням кожного із виразів і перевірити результат дії кожної програми.
2. Перенести методи:
а) static int ternary(int i) {return i < 10 ? i*100; i*10;}
б) static int alternative(int i) {if (i<10) return i*100;else i*10;}
упрограму, яка працює, і виконати її. 3. Перенести методи:
а) static int test(int testval, int target) {
int result = 0; if (testval > target) result = +1; else if (testval < target) result = -1; else result = 0; return result;}
б) static int test(int testval, int target) {
int result = 0; if (testval > target) result = +1; else if (testval < target) result = -1; else return 0;}
упрограму, яка працює, і виконати її.
4.Скласти програму, яка виводить числа від 1 до 100.
5.Згідно із завданням 4 в разі досягнення числа 43 програма завершує роботу, використовуючи ключове слово break. Зробіть спробу скористатися оператором return.
35
6.Записати метод, який використовує всі операції відношень для двох рядків. Рядки подаються параметрами в методі, який використовує всі операції відношення для їх порівняння, а потім виводить результат. Застосовуйте операції «==», «!=», а також перевірте методом equals(). Цей метод викликається з методу main() і має кілька різних рядків String.
7.Створити програму, яка генерує 30 різних цілих значень. Для кожного значення застосувати конструкцію if-else для визначення відношення («більше», «менше», «дорівнює»), в якому воно перебуває із випадковим числом.
8.У завданні 7 змінити програму так, щоб код програми був розміщений у нескінченому циклі while. Програма має працювати до натискання клавіш Ctrl+C.
9.Створити програму, яка використовує два вкладені цикли і оператор цілочислового ділення (%) для пошуку простих чисел.
10.Створити конструкцію switch, яка виводить повідомлення для кожної пропозиції case,
ірозмістити цю конструкцію в цикл for, який послідовно перевіряє кожну з наявних пропозицій case. Розмістити оператор break після кожної пропозиції і перевірити здійснену дію, потім знищити оператори break, пояснити отриманий результат.
6.3.Контрольні тестові завдання теми
1.Заповніть пропуски в кожному з наведених далі тверджень.
а) У класі _______________ є методи для малювання.
б) Виконання аплетів Java розпочинається із виконання трьох методів:
__________________, ______________ і ________________.
в) Методи ____________ і ___________ відображають відрізки прямої та прямокутники. г) Ключове слово ___________ вказує на те, що новий клас є підкласом наявного класу. д) Кожен аплет Java має розширяти або клас __________, або клас ______________.
е) В Java використовують вісім примітивних типів даних:
1.___________________
2.___________________
3.___________________
4.___________________
5.___________________
6.___________________
7.___________________
8.___________________
2.Визначте, яке з наведених далі стверджень є правильним. Якщо ствердження неправильне, то поясніть чому.
а) Щоб відобразити прямокутник, методу drawRect потрібно передати чотири параметри, які визначають дві точки у вікні аплету.
б) Метод drawLine використовує чотири параметри, які визначають дві точки на аплеті, щоб провести пряму лінію.
в) Тип Double є примітивним типом даних.
г) Тип даних int використовується для оголошення чисел з плаваючою крапкою.
д) Метод Double.parseDouble виконує перетворення об’єкта String до значення примітивного типу double.
3.Написати оператори Java для виконання таких дій:
а) Вивести діалог, в якому користувач має ввести число із плаваючою крапкою.
б) Перетворити рядок на число з плаваючою крапкою і зберегти отримане значення у змінній age типу double. Нехай об’єкт String зберігається у змінній stringValue.
с) Вивести повідомлення «Ця програма на Java» в один рядок в аплеті в координатах (10, 10). Ви можете визначити цей оператор у методі аплету paint.
г) Вивести повідомлення «Ця програма на Java» у двох рядках аплета. Ви можете визначити ці оператори в методі аплету paint. Перший рядок має виводитися в точці з координатами (10,10) і закінчуватися словом «Програма».
Обидва рядки повинні мати однакову х-координату.
Рекомендована література [12, 15, 17].
36
Тема 7. ІНІЦІАЛІЗАЦІЯ І ЗАВЕРШЕННЯ ДІЇ ЗМІННИХ У ПРОГРАМІ
Вивчивши матеріал теми, студенти знатимуть:
—особливості використання конструктора;
—технологію перевантаження методів;
—як викликати конструктор із конструктора;
—порядок ініціалізації примітивних типів і масивів;
—процеси ініціалізації та знищення змінних у програмі;
—способи ініціалізації членів класу;
—функції, параметри і значення різних типів змінних;
—порядок ініціалізації.
Вивчення матеріалу теми допоможе студентам:
•використовувати метод finalize();
•аналізувати результати дії збирача «сміття»;
•виявляти недоліки й імовірні помилки явної статичної ініціалізації;
•розробляти заходи ініціалізації багатовимірних масивів;
•виконувати процедуру ініціалізації в процесах управління програмою.
7.1.Навчальні завдання для виконання практичної роботи
Мета роботи: сформувати практичні навички щодо здійснення ініціалізації на фундаментальній основі, визначати процедури формування конструкторів та залучення їх у програмах простої структури.
План
1.Ініціалізація змінних та особливості використання їх.
2.Конструктор та умови його застосування в ініціалізації.
3.Характеристика примітивних типів даних.
4.Ініціалізація складних типів даних.
5.Вбудовані класи: клас String, інтерфейсні класи, які породжені від числовихтипівданих.
6.Побудова власних класів: ініціалізація екземпляра класу, ключове слово this.
7.Управління пам’яттю: динамічно розподілена пам’ять, управління пам’яттю в Java, процедура збирання «сміття».
8.Процедура очищення. Метод finalize().
Відпрацювати на практичному занятті наведені приклади програм. За результатами виконання кожної програми надати змістові пояснення і скласти звіт.
Ініціалізація конструктором
Приклади порядку ініціалізації
class Tag {
Tag (int market) {
System.out.println (“Tag (“ + market + “)”);
}
}
class Card {
Tag t1 = new Tag(1); // Перед конструктором Card() {
// сигнлізуємо, що ми в конструкторі
System.out.println («Card() «);
t3 =new Tag(33); // Заново ініціалізуємо t3
}
Tag t2 = new Tag(2); // Після конструктора void f() {
System.out.println («f () «);
}
Tag t3 = new Tag(3); // Наприкінці тексту
37
}
public class OrderOfInitialization { public static void main (String[] args) { Card t = new Card();
t.f(); // Сигналізуємо про завершення ініціалізації
}
}
Ініціалізація статичних даних
class Bowl {
Bow1 (int marke) {
System.out.println («Bow1 (« + market + «)»);
}
void f(int marker) {
System.out.println («f (« + market + «)»);
}
}
class Table {
static Bow1 b1 = new Bow1(1); Table() {
System.out.println («Table()»); b2.f(1);
}
void f2(int marker) {
System.out.println («f2 (« + market + «)»);
}
static Bow1 b2 = new Bow1(2);
}
class Cupboard {
Bow1 b3 = new Bow1(3); static Bow1 b4 = new Bow1(4); Cupboard() {
System.out.println («Cupboard()»); b4.f(2);
}
void f3(int marker) {
System.out.println («f3 (« + market + «)»);
}
static Bow1 b5 = new Bow1(5);
}
public class StaticInitialization { public static void main (String[] args) { System.out.println (
«Створюємо новий об’єкт Cupboard в main() «); new Cupboard();
System.out.println (
«Створюємо новий об’єкт Cupboard в main() «); new Cupboard();
t2.f2(1);
t3.f3(1);
}
static Table t2 = new Table ();
static Cupboard t3 = new Cupboard ();
}
Явна статична ініціалізація
class Cup {
38
Cup (int marker) {
System.out.println («Cup (« + market + «)»);
}
void f(int marker) {
System.out.println («f (« + market + «)»);
}
}
class Cups { static Cup c1; static Cup c2; static {
c1 = new Cup(1);
c2 = new Cup(2);
}
Cups() {
System.out.println («Cups ()»);
}
}
public class ExplicitStatic {
public static void main (String[] args) { System.out.println (« В методі main()»);
}
}
Запропоновані приклади виконати в середовищі JDK і сформулювати висновки за результатами роботи кожного прикладу:
Приклад 1. Конструктор class Rock {
Rock() {
System.out.println («Створення Rock «);
}
}
public class SimpleConstructor { public static void main (String[] args) { for (int i=0; i < 10; i++)
new Rock();
}
}
Приклад 2. Конструктор з параметрами class Rock2 {
Rock2(int i) {
System.out.println («Створення об’єкта Rock під номером» + i);
}
}
public class SimpleConstructor2 { public static void main (String[] args) { for (int i=0; i < 10; i++)
new Rock2(i);
}
}
Приклад 3. Перевантаження конструкторів разом із перевантаженням звичайних методів
import java.util.*; class Tree {
int height; Tree() {
prt(«Посадка садженця»);
39
height = 0;
}
Tree(int i) {
prt(«Створення нового дерева завдовжки у» + i + «метрів»); height = 1;
}
void info() {
ptr(«Дерево завдовжки» + height + «метрів»);
}
static void prt(String s) { System.out.println (s);
}
}
public class Overloading {
public static void main (String[] args) { for (int i=0; i < 5; i++)
Tree t=new Tree(i); t.info();
t.info(«Перевантажений метод»);
}
new Tree(); // Перевантажений конструктор
}
}
Приклад 4. Перевантаження за розташуванням параметрів. public class OverloadingOrder {
static void print(String s, int i) { System.out.println( «String: « + s + «. int: « + i);
}
static void print(int i, String s) { System.out.println(«int: « + i +». String: « + s);
}
public static void main(String [] args) { print («Спочатку строка», 11);
print (99, «Спочатку число»);
}
}
Приклад 5. Приклад використання слова «this» public class Leaf {
int i = 0;
Leaf increment () { i++;
renurn this;
}
void print() { System.out.println («i =« + i);
}
public static void main(String [] args) { Leaf x = new Leaf();
x.increment ().increment ().increment ().print();
}
}
Приклад 6. Виклик конструктора словом «this» public class Flower {
int petalCount = 0;
String s = new String(«null»); Flower(int petals) {
40