Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка Java-технологии.doc
Скачиваний:
12
Добавлен:
01.05.2019
Размер:
793.09 Кб
Скачать

Створення Java додатка із графічним інтерфейсом.

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

Екранною формою називається область, 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000що видна на екрані у вигляді вікна з різними елементами - кнопками, текстом, що випадають списками й т.п. А самі ці елементи називаються компонентами.

Форма - це об'єкт, звичайно прямокутної форми, якому можна застосовувати для надання інформації користувачеві й для обробки уведення інформації від користувача.

У нашому проекті HelloWorld відкриємо File /New File. У діалозі, що відкрився, у списку категорій виберіть Swing GUI Forms. Виберіть тип файлу JFrame Form. Натисніть Next>(мал. 3.6.).Після цього введемо назву створюваного класу й пакет, де він буде зберігатися. І натискаємо Finish.

IDE створює новий клас. І відкриває його у візуальному редакторі форми. Тепер для додавання елементів на наш JFrame, досить просто використати простий Drag and Drop.

Додамо на форму кнопки JButton і текстове поле JtextField. Логікою роботи програми буде вивід вітання в текстовому полі при натисканні першої кнопки, і очищення поля виводу при натисканні іншої кнопки.

Рис. 3.6. Створення проекту із графічним інтерфейсом.

Рис. 3.7. Додавання елементів на форму.

Вище на мал.3.7. наведений дизайн форми. Всі елементи, що додають на форму, відображаються в панелі називаної Inspector. У ній легко одержати доступ до будь-якого елемента на формі. Навіть якщо він прямо не видний на формі (наприклад, такі елементи як ButtonGroup).

Для текстового поля заберемо текст jTextField1. Для цього на панелі властивостей поля знайдемо властивість текст і залишимо порожній рядок. Для кнопки 1 у поле властивості текст наберемо Greeting,а для кнопки 2 наберемо Clear.Ну й для всіх доданих нами елементів, поміняємо назви змінних на назви, які краще відбивають їхню функціональність. Це робиться виділенням елемента, і в його контекстному меню вибором пункту Change Variable Name ...(мал. 3.8)

Рис. 3.8. Перейменування змінної.

У діалозі, що з'явився, Rename уводимо нове ім'я змінної jbGreet.Точно так само ім'я змінної для другої кнопки буде jbClear,а для текстового поля tfGreetMessage.

Після цих дій додамо два оброблювачів подій для кожної із кнопок, які будуть створюватися при натисканні. Це найпростіше зробити також з контекстного меню елементів (див. мал. 3.9.).

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

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

// TODO add your handling code here:

}

Подкорректируем цю функцію:

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

// TODO add your handling code here:

tfGreetMessage.setText("Hello");

}

У такий же спосіб створимо оброблювач події для натискання кнопки jbClear:

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

// TODO add your handling code here:

tfGreetMessage.setText("");

}

А тепер запускаємо програму на виконання.

Для того щоб подивитися, як створюється меню, варто відкрити приклад JavaApplicationGUI_example, що перебуває в папці з лабораторними роботами.

Спочатку варто розпакувати zip-архів, і витягти папку, що перебуває в ньому, з файлами проекту в папку з вашими проектами (наприклад, C: \Documents and Settings\User). Потім запустити середовище NetBeans, якщо вона не була запущена, і закрити наявні відкриті проекти, щоб вони не заважали. Після чого вибрати в меню File/Open Project, або або на панелі інструментів іконку з открывающейся фіолетової папочкой, або нажати комбінацію клавіш <Shift>+<Ctrl>+O. У діалозі, що відкрився, вибрати папку JavaApplicationGUI_ example (краще в неї не заходити, а просто встановити виділення на цю папку) , після чого нажати кнопку Open Project Folder.

Рис. 3.9. Додавання оброблювача подій.

При цьому якщо не знімати галочку “Open as Main Project”, проект автоматично стає головним.

У вікні редактора вихідного коду з'явиться наступний текст:

/*

* GUI_application.java

*

* Created on 15 Вересень 2007 р., 20:50

*/

package java_gui_example;

/**

*

* @author gera

*/

public class GUI_application extends javax.swing.JFrame {

/** Creates new form GUI_application */

public GUI_application() {

initComponents();

}

/** This method is called from within the constructor to

* initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor.

*/

+Generated Code

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

System.exit(0);

}

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new GUI_application().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JMenuItem aboutMenuItem;

private javax.swing.JMenuItem contentsMenuItem;

private javax.swing.JMenuItem copyMenuItem;

private javax.swing.JMenuItem cutMenuItem;

private javax.swing.JMenuItem deleteMenuItem;

private javax.swing.JMenu editMenu;

private javax.swing.JMenuItem exitMenuItem;

private javax.swing.JMenu fileMenu;

private javax.swing.JMenu helpMenu;

private javax.swing.JMenuBar menuBar;

private javax.swing.JMenuItem openMenuItem;

private javax.swing.JMenuItem pasteMenuItem;

private javax.swing.JMenuItem saveAsMenuItem;

private javax.swing.JMenuItem saveMenuItem;

// End of variables declaration

}

Пояснимо деякі його частини. Декларація класу GUI_application у цьому випадку трохи складніше, ніж раніше:

public class GUI_application extends javax.swing.JFrame

Вона означає, що задається загальнодоступний клас GUI_application, що є спадкоємцем класу JFrame, заданого в пакеті swing, вкладеному в пакет javax.Загальнодоступний конструктор GUI_application()створює об'єкт додатка й инициализирует всі його компоненти, методом initComponents(), автоматично генерируемом середовищем розробки й приховуваному у вихідному коді вузлом +Generated Code.

Розгорнувши вузол, можна побачити реалізацію цього методу, але змінити код не можна.

Далі треба закритий метод

public static void main(String[] args)

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

При запуску додатка екранна форма виглядає так, як показано на малюнку.3.10. У ній уже є заготівля меню, що здатно розвертатися й сворачиваться, і навіть працює пункт Exit - “Вихід”. При натисканні на нього відбувається вихід з додатка.

Рис.3.10. Запущений додаток з меню

Розглянемо, як змінити текст пунктів меню форми з англійського на росіянин. Якщо клацнути мишею по якому-небудь пункті (item) меню, у вікні редактора властивостей з'являться значення властивостей цього пункту. І ми легко перемінимо “File” на “Файл”, “Edit” на “Виправлення”, “Help” на “Довідка”. Для того щоб без компіляції й запуску програми подивитися, як буде виглядати наша екранна форма, можна нажати іконку Preview Design (третя по рахунку після закладки Design у вікні редагування екранної форми).

Але вкладені пункти меню, що з'являються при виборі кожного з пунктів верхнього рівня, так відредагувати неможливо. Вони редагуються при переході в режим дизайну, а також у цьому режимі при щиглику в області екранної форми, у лівому нижнім вікні (Inspector - “інспектор компонентів”) середовища розробки з'являється список компонентів екранної форми.

Сама екранна форма є екземпляром класу JFrame. Розгорнемо вузол для нашої форми типу JFrame, а також вкладені вузли menuBar типу JMenuBar й fileMemu типу JMenu, як показано на мал.3.11.

Ми побачимо імена змінним, відповідним всім пунктам меню, вкладеним у файлове меню: openMenuItem, saveMenuItem, saveAsMenuItem, exitMenuItem. Щиглик по імені openMenuItem у вікні інспектора компонентів приведе до того, що у вікні редагування властивостей з'являться значення властивостей даного пункту меню. У поле Text замінимо слово “Open” на “Відкрити”. Потім перейдемо на пункт saveMenuItem, і так далі. У результаті одержимо екранну форму з пунктами меню російською мовою.

Рис.3.11. Вікно інспектора компонентів

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

Рис.3.12. Компонент JPopupMenu1

У режимі дизайну (закладка Design) виберемо мишею в палітрі компонентів (вікно Palette у правому верхнім вікні) компонентів JPopupMenu, і перетягнемо його на екранну форму. Він там не з'явиться, але у вікні інспектора компонентів у дереві Other Components виникне новий вузол jPopupMenu1[JPopupMenu](мал.3.12). Якщо клацнути по вузлі, виявиться, що крім самого компонента jPopupMenu1 у ньому нічого немає.

Клацнемо правою кнопкою миші по цьому вузлі, і в що появились спливаючому меню виберемо Add/JMenuItem. Після цього в дереві jPopupMenu1 виникне вузол jMenuItem1[JMenuItem], і в редакторі властивостей компонентів (мал.3.13) можна задати значення властивості Text даного компонента. Уведемо текст “Вийти із програми”.

Далі вже відомим нам способом задамо оброблювач натискання на цей пункт меню - виберемо в спливаючому меню, що виникає при щиглику правою кнопкою миші по імені jMenuItem1 у вікні Inspector, пункт Events/ Action/ ActionPerformed. А в оброблювачі напишемо оператор виходу із програми

System.exit(0);

Ми поки тільки створили спливаюче меню, що доступно в нашій формі, але ще не призначили його ніякому компоненту. Для того щоб призначити меню jPopupMenu1 кнопці JButton1, виділимо її, і в редакторі властивостей компонентів у пункті componentPopupMenu натиснемо мишею стрілку вниз, що розвертає список, що випадає, і виберемо jPopupMenu1.

/

Рис.3.13. Властивості jMenuItem1

Тепер спливаюче меню, що складається з одного пункту “ Вийти із програми ”, з'явиться при щиглику правою кнопкою миші по кнопці. Додавання інших пунктів меню й призначення їм оброблювачів подій проводиться абсолютно так само, як для jMenuItem1.