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

ТСПП

.pdf
Скачиваний:
0
Добавлен:
13.08.2024
Размер:
1.31 Mб
Скачать

Навігація в редакторі та Java -файлі

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

Вікно Navigator. Вікно Navigator з'являється нижче за вікно проектів і містить список елементів (наприклад, конструктори, поля і методи) поточного Java -файла. При виборі елемента курсор введення переміститься в рядок, що містить цей елемент в редакторі коду.

Bookmarks. Надає засоби із створення закладок в початковому файлі для легкого переміщення. Створення закладок можна здійснити шляхом клацання правою кнопкою миші на межі файлу (команда Toggle Bookmark) або вибравши Toggle Bookmark (Ctrl + F2) в меню Navigate. Переміщення між ними реалізується з допомогою комбінації клавіш: Alt + K і Alt + L, або вибравши Back або Forward в

меню Navigate.

Меню Navigate – застосовується для швидкої навігації між елементами в коді.

Втабл.1. приведено список комбінацій клавіш в меню Navigate.

Комбінації

клавіш

Alt + Shift + O

Alt + O

Alt + G

Ctrl + B

Alt + Shift + L

Alt + Shift + K

Опис команди

Go to Class. Відкриває діалогове вікно Fast Open, яке дозволяє швидко відкрити файл. При наборі імені класу, у вікні відображається список відповідних файлів.

Go to Source. Перейти до початкового коду поточного виділеного класу, методу або поля.

Go to Declaration. Подібно до попередньої команди, відкриває файл, в якому оголошена змінна, на якій знаходиться курсор введення.

Go to Super Implementation. Переходить до базової реалізації вибраного методу (якщо вибраний метод перевизначає метод з іншого класу).

Перехід до наступного елементу в списку переміщень в усіх файлах. Перехід до попереднього елементу в списку переміщень в усіх файлах.

Засоби для пошуку і виділення

Наступна таблиця містить короткий огляд засобів для пошуку і виділення, доступних в редакторі коду.

 

 

 

Комбінації клавіш

 

Опис команди

 

 

 

 

 

 

Ctrl + Shift + 0

 

Відкриває вікно Search Results.

 

 

 

 

 

 

Ctrl + Shift + P

 

Пошук в проектах.

 

 

 

 

 

 

Ctrl + F

 

Пошук тексту в поточному файлі.

 

 

 

Ctrl + H

 

Замінює текст в поточному файлі.

 

 

 

11

 

 

 

Комбінації клавіш

 

Опис команди

 

 

 

 

 

 

F3

 

Пошук наступного входження слова в результаті пошуку.

 

 

 

 

 

 

Shift + F3

 

Пошук попереднього входження слова в результаті пошуку.

 

 

 

 

 

 

Ctrl + F3

 

Пошук усіх входжень елементу, на якому знаходиться курсор введення.

 

 

 

 

 

 

Alt + Shift + H

 

Включення або відключення підсвічування результату пошуку.

 

 

 

 

 

 

КОНТРОЛЬНІ ПИТАННЯ

1.Порядок створення нового проекту в IDE NetBeans?

2.Призначення елементів JFrame та JTextField?

3.Які основні вікна використовують при розробці проекту, яке їх призначення?

4.Особливості створення багато віконних проектів.

5.Призначення шаблонів у NetBeans і який пункт меню для цього призначений?

6.Процедура здійснення імпорту бібліотек у код програми?

ПОРЯДОК ВИКОНАННЯ РОБОТИ

1.Створити новий проект у середовищі NetBeans. Відкомпілювати його та переглянути вміст папки проекту та створені файли на диску.

2.Зробити проект у списку проектів головним.

3.Створити JFrame форму у проекті, розмістити на ній компоненти для реалізації програми-візитівки студента. Програма повинна містити: прізвище, ім’я, по-батькові, місце народження, адресу проживання, групу навчання. Елементи розмістити на формі індивідуально. Змінити шрифти написання та форматування

4.Додати нову форму до проекту, що міститиме інформацію про розробника та підключити її до першої форми. При появі попередження зі значком лампочки натиснути Alt + Enter та переглянути запропоновані варіанти виправлення помилки.

5.До другої форми додати кнопку та застосовуючи цикл for й скориставшись шаблоном

коду прописати цикл від А до Б та вивести результат на консоль згідно з варіантом.

А= |номер варіанту – 10|+1 Б= |номер варіанту + 10|+1

Початкове значення X задати рівне номеру варіанту.

Варіант

Вираз

Варіант

Вираз

 

 

 

 

1

Y=2X

9

Y=X

 

 

 

 

2

Y=X+3

10

Y=2X

 

 

 

 

3

Y=10X-1

11

Y=X+3

 

 

 

 

4

Y=20+2X

12

Y=10X-1

 

 

 

 

5

Y=10X

13

Y=20+2X

 

 

 

 

6

Y=5X-1

14

Y=10X

 

 

 

 

7

Y=2X+1

15

Y=5X-1

 

 

 

 

8

Y=45X+23

16

Y=2X+1

 

 

 

 

6. Скориставшись комбінацією клавіш Ctrl + F або F3 знайти всі входження назви jButton1 у файл та записати їх кількість. Оформити звіт згідно вимог.

7. Додаткове завдання. Додати в циклі код який присвоює змінній y будь-яку математичну функцію, скориставшись бібліотекою Math. Використавши комбінацію клавіш для імпорту бібліотек, вставити код імпорту в код програми.

12

Лабораторна робота №2

Тема роботи: Механізми обробки подій в середовищі NetBeans

Мета роботи: Вивчення основних функцій та подій у середовищі NetBeans.

Теоретичні відомості

Вивчення основних функцій та їх програмування приведемо на конкретному прикладі програми-калькулятор, інтерфейс якої буде створено на основі знань здобутих в попередній роботі. Головне вікно програми приведено на рисунку 1.

Рис.1. Типове вікно програми

Для того щоб кнопки стали функціональними, кожній з них необхідно привласнити обробник подій, який буде відповідати за реагування на події. В даному випадку необхідно ідентифікувати подію натиснення кнопки – шляхом клацання мишею або за допомогою клавіатури. Тому буде використовуватися інтерфейс "ActionListener", призначений для обробки подій "ActionEvent".

1.Натиснути правою кнопкою миші кнопку "Exit". В меню, що з'явилося, вибрати

"Events > Action > ActionPerformed". Необхідно пам’ятати, що меню містить множину інших подій, на які може реагувати програма, тому при виборі події "actionPerformed" середовище IDE автоматично додає інтерфейс "ActionListener" до кнопки "Exit" і створює метод-обробник, який буде відповідати за обробку методу

"actionPerformed".

2.В середовищі IDE автоматично відкривається вікно "Source Code", де відображається місце вставки дії, яка повинна виконуватися кнопкою при її натисненні (за допомогою миші або клавіатури). Вікно "Source Code" повинно містити готові рядки,

вякі необхідно написати код: System.exit(0);

3.Готовий код кнопки "Exit" повинен виглядати наступним чином:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

System.exit(0);

}

13

Для додавання функціональності до кнопки "Clear" необхідно:

1.Натиснути вкладку "Design" у верхній частині робочої області для повернення до екрану "Form Design".

2.Натиснути правою кнопкою миші кнопку "Clear" (jButton1). В меню, що з'явилося, виберати "Events > Action > actionPerformed".

3.Натиснення кнопки "Clear" повинно приводити до видалення всього тексту зі всіх текстових полів "jTextField". Для цього слід додати код, аналогічний приведеному

вище. Готовий початковий код повинен виглядати наступним чином: private void

jButton1ActionPerformed(java.awt.event.ActionEvent evt){ jTextField1.setText("");

jTextField2.setText("");

jTextField3.setText("");

}

Додавання функціональності до кнопки "Add"

Кнопка "Add" повинна виконувати три дії:

1.Спочатку вона приймає дані, введені користувачем в полях jTextField1 і jTextField2, і перетворює їх з типу "String" в тип "Float".

2.Потім повинно проводитися додавання двох чисел.

3.Отримана сума повинна бути перетворена в тип "String" і поміщена в полі jTextField3. Для реалізації даних операцій необхідно:

1.Натиснути вкладку "Design" у верхній частині робочої області для повернення до екрану "Form Design".

2.Натиснути правою кнопкою миші кнопку "Add" (jButton2). В меню, що з'явилося,

вибрати "Events > Action > actionPerformed".

3.Додати код дій, які повинна виконувати кнопка "Add". Готовий початковий код

повинен виглядати наступним чином:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt){

float num1, num2, result;

num1 = Float.parseFloat(jTextField1.getText()); num2 = Float.parseFloat(jTextField2.getText()); result = num1+num2; jTextField3.setText(String.valueOf(result));

}

Тепер програма повністю готова, і можна приступити до її збірки і виконання. Для виконання програми в середовищі IDE необхідно виконати наступні дії:

1.Вибрати "Run > Run Main Project".

2.При появі вікна з повідомленням про те, що для проекту "NumberAddition" не встановлений головний клас, вибрати в якості головного класу

"my.NumberAddition.NumberAdditionUI" і натиснути кнопку "OK".

Для запуску програми за межами середовища IDE необхідно виконати наступні дії:

1.Для збірки архіву JAR додатку вибрати "Run > Clean and Build Main Project" (ShiftF11).

14

2.За допомогою провідника по файловій системі або диспетчера файлів перейти в каталог NumberAddition/dist та запустити файл NumberAddition.jar.

Для запуску додатку з командного рядка необхідно:

1.Викликати командний рядок або вікно термінала. Далі в командному рядку змінити поточний каталог на каталог NumberAddition/dist.

2.В командному рядку ввести наступний оператор: java -jar NumberAddition.jar

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

1.Повернутися до файлу NumberAdditionUI.java в редакторі та натиснути вкладку "Design" для проглядання структури графічного інтерфейсу в GUI Builder.

2.Натиснути правою кнопкою миші будь-який елемент графічного інтерфейсу і вибрати "Events" в меню, що з'явилося. Тепер можна просто вивчити вміст меню, не вибираючи яких-небудь пунктів.

3.Як альтернативу можна вибрати "Properties" в меню "Window". А саме, у вікні "Properties" натиснути на вкладку "Events". Вкладка "Events" дозволяє переглянути і змінити обробники подій, пов'язані з поточним активним елементом графічного інтерфейсу.

4.Додаток також може реагувати на натиснення клавіш, одинарне, подвійне або потрійне клацання мишею, переміщення покажчика миші, зміна розміру вікна і

переміщення фокусу введення. Меню "Events" дозволяє автоматично створити обробники подій для всіх цих подій. Найбільш поширеним з них є подія "Action".

Виконання подій здійснюється наступним чином. Кожного разу при виборі події в меню "Event" середовище IDE автоматично створює інтерфейс прослуховування подій (event listener) і прив'язує його до елемента.

Як правило, для отримання можливості реагування інтерактивного елемента графічного інтерфейсу він повинен бути зареєстрований в якому-небудь інтерфейсі прослуховування подій і мати зв'язаний обробник подій. З огляду на те, середовище IDE NetBeans забезпечує автоматичну прив'язку інтерфейсу прослуховування, що дозволяє розробнику звернути основну увагу реалізації бізнес-логіки, яка повинна ініціюватися подією.

КОНТРОЛЬНІ ПИТАННЯ

1.Опишіть команду яка створює метод-обробник?

2.Основні команди перетворення типів.

3.Особливості запуску програми з командного рядка?

4.Опишіть події на може реагувати додаток та їх основні види?

ПОРЯДОК ВИКОНАННЯ РОБОТИ

1. Створити новий проект у середовищі NetBeans та реалізуйте програму систему калькулятор. Дизайн проекту реалізувати у відповідності до власних (індивідуальних) вподобань.

15

2.Поверніться до розробленого додатку для перегляду початкового коду графічного інтерфейсу. Виконайте прокрутку вниз та прогляньте реалізовані методи jButton1ActionPerformed(), jButton2ActionPerformed() і jButton3ActionPerformed().

Тепер перейдіть до методу initComponents(). Якщо цей метод відсутній, знайдіть рядок Generated Code і натисніть знак + поряд із цим рядком для відображення прихованого методу initComponents(). Зверніть увагу на синій блок, що «оточує» метод initComponents(). Цей код був автоматично створений середовищем IDE і не може бути змінений користувачем.

3.Тепер подивитеся на метод initComponents(). Крім іншого, він містить код, що ініціалізував елементи графічного інтерфейсу і помістив їх на форму. Цей код створюється і обновляється автоматично при розміщенні і зміні елементів в режимі проектування. В методі initComponents() знайдіть наступний фрагмент:

jButton3.setText("Exit");

jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton3ActionPerformed(evt);

}

});

Вцьому місці до елемента графічного інтерфейсу, в даному випадку до jButton3 (або інша

взалежності від застосовуваного елемента керування), додається об'єкт прослуховування подій "ActionListener". Інтерфейс "ActionListener" має метод "actionPerformed" об'єкту

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

4.Додайте нову форму з інформацією про автора.

5.Додаткове завдання 1. Забезпечити, щоб при відкритті вікна фрейму (подія WindowOpened) друге і третє поле введення ставали невидимими та при оновленні вмісту першого jTextField1 відображався другий, а при оновленні другого – третій.

6.Додати, щоб при втраті фокусу введення другим полем кнопка «=» змінювала свої розміри (60х50 пікселів), а при зміні розмірів першої кнопки, розмір всіх решта кнопок змінювався на аналогічний (використати властивість getSize).

7.Додаткове завдання 2. Додати до програми-калькулятор додаткові елементи (не менше 3), що містяться в бібліотеці Math.

8.Оформити звіт згідно з вимогами.

16

Лабораторна робота №3

Тема роботи: Реалізація програмної системи для роботи із графічною інформацією. Мета роботи: Навчитись працювати із графічними зображеннями у середовищі

NetBeans.

Теоретичні відомості

Для багатьох початківців програмістів на Java проблемою є обробка зображень. Оскільки по-перше, їх завантаження за абсолютною адресою на диску – заняття безперспективне, тому що у випадку «зникнення» файлу з диску виникає проблема його відображення; по-друге: завантаження ресурсу з jar-файлу, який часто реалізується із використанням класу java.io.File, що призначений для роботи с файловими системами.

З огляду на це оптимальним варіантом є завантаження ресурсу в jar-файл для чого служать методи:

java.lang.Class.getResource(String); java.lang.Class.getResourceAsStream(String); java.lang.ClassLoader.getResource(String); java.lang.ClassLoader.getResourceAsStream(String).

Методи Class-у делегують виклики ClassLoader-у:

getResource(String) який за іменем ресурсу повертає java.net.URL, через який можна отримати даний ресурс.

getResourceAsStream(String)повертає java.io.InputStream, через який ресурс можна прочитати.

При цьому, назва ресурсу представляє собою шлях до нього і який може бути абсолютним та відносним. Зовнішня відмінність - абсолютне ім'я починається з символу '/'. У першому випадку ресурс шукається відносно кореня classpath. Тобто беруться всі шляхи і jar-файли, що входять до classpath, і ресурс шукається щодо сукупності цих точок. Якщо ж ім'я відносне - до нього на початку приписується шлях, отриманий з пакету поточного класу.

Далі пошук ведеться як у випадку абсолютного імені.

 

 

Наприклад,

нехай

заданий

клас:

classpath:

c:\work\myproject\classes;c:\lib\lib.jar.

Приклад 1. Застосовуючи конструкцію getClass(). getResource("/images/logo.png"). Оскільки ім’я починається з символу '/' – то воно абсолютне. Пошук ресурсу здійснюється наступним чином:

1.До шляху з classpath c:\work\myproject\classes приписується назва ресурсу /images/logo.png, в результаті чого шукається файл c:\work\myproject\classes\images\logo.png. Якщо файл знайдено – пошук зупиняється, в іншому випадку:

2.В jar-файлі c:\lib\lib.jar шукається файл /images/logo.png, при цьому пошук здійснюється від кореня jar-файлу.

Приклад 2. Застосовуючи конструкцію getClass(). getResource("res/data.txt"). Оскільки ім’я не починається з символу '/' – воно вважається відносним. Пошук ресурсу здійснюється наступним чином:

1. До шляху з classpath c:\work\myproject\classes приписується поточний пакет класу, де знаходиться код, – /ru/skipy/test, – і дальше ім’я ресурсу

17

res/data.txt,

в

результаті

чого

шукається

файл

c:\work\myproject\classes\ru\skipy\test\res\data.txt. Якщо файл не знайдено пошук припиняється, в іншому випадку:

2.В jar-файлі c:\lib\lib.jar шукається файл /ru/skipy/test/res/data.txt

(ім’я пакета поточного класу плюс ім’я ресурсу), причому пошук ведеться від кореня jar-файлу.

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

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

1.У вікні "Проекти" розвернути вузол "ImageDisplayApp" (назва проекту) .

2.Клацнути правою кнопкою вузол "Початкові файли" і вибрати форму "Створити" >

"JFrame".

3.Як ім'я класу ввести ImageDisplay, в якості імені пакету ввести org.me.myimageapp.

4.Натиснути кнопку "Завершити".

Для додавання напису у розділі "Палітра" вибрати компонент "Мітка" і перетягнути його у форму. Форма повинна набрати наступного вигляду:

Рис.1. Вигляд форми

Якщо необхідним є використання зображення або іншого ресурсу то застосовується

окремий пакет Java. Для цього необхідно:

1.У вікні "Проекти" клацнути правою кнопкою вузол "org.me.myimageapp" і вибрати "Створити" > "Пакет Java".

Рис.2. Створення нового пакету

2.У майстрі створення проекту до імені org.me.myimageapp додати .resources; новий пакет отримає ім'я org.me.myimageapp.resources.

3.Натиснути кнопку "Завершити".

Врезультаті зазначених дій у вікні "Проекти" в пакеті org.me.myimageapp.resources повинно з'явитися зображення (рис.3).

18

Рис.3. Наявність «зображення» у вікні проекти

Для додання зображення до мітки необхідно У редакторі GUI Designer вибрати мітку, яка була додана раніше у форму, далі у вікні "Властивості" клацнути категорію "Властивості" де здійснити прокрутку до властивості "icon" де натиснути кнопку у вигляді еліпса (..) і в діалоговому вікні властивостей значка клацнути "Імпорт в проект".

Рис.4. Перший крок додання зображення до мітки

Далі, у вікні вибору файлів вибрати будь-яке збережене в комп'ютері зображення. Потім натиснути кнопку "Далі" та на сторінці "Вибір цільової теки" в майстрі вибрати теку resources і натиснути кнопку "Далі".

Рис.5. Другий крок додання зображення до мітки

19

При натисненні кнопки "Далі" в середовищі IDE будуть виконані наступні операції:

Копіювання зображення в проект. В результаті при виконанні зборки і впровадження додатку це зображення буде додано у кінцевий архів JAR.

Створення коду, що реалізовує доступ до зображення, в класі "ImageDisplay".

Відображення зображення в якості мітки в режимі розробки форми.

Для оптимізації виду форми необхідно:

У вікні "Властивості" вибрати властивість text і видалити мітку jLabel1. Це значення було створене GUI Builder як текст мітки, що відображався. В даному випадку як мітка відображується зображення, а не текст, тому вводити текст не потрібно.

Перетягнути лейбел в центр форми.

Рис.6. Оптимізація виду форми

Перегляд створеного коду :

1.У GUI Designer перейти на вкладку "Початковий код".

2.Прокрутите вниз до рядка "Створений код".

3.Клацніть значок (+) зліва від рядка "Створений код" для перегляду коду, створеного

GUI Designer.

Основний рядок виглядає таким чином:

jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource

("/org/me/myimageapp/resources/park - sculpture.jpg")));

Властивість Icon елемента jLabel1 була змінена в редакторі властивостей, тому середовищем IDE був створений метод setIcon. У параметрі цього методу знаходиться виклик методу getResource() анонімного внутрішнього класу в ImageIcon. Зверніть увагу на те, що створений шлях до зображення пов'язаний з його місцем розташування в структурі пакетів додатку.

20