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

ЕВ-4791

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

Рис. 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