Графічний інтерфейс на java swing - gui tutorial
У Java є 2 основних пакети для створення графічних інтерфейсів (Graphics User Interface). Це Abstract Windows Toolkit (AWT) і Swing. AWT використовує віджети операційної системи, тому ця бібліотека трохи швидше. Але на мій погляд, Swing більш добре спроектований.
В даному туторіали ми розглянемо основні елементи бібліотеки Swing і створимо простий інтерфейс (GUI) в якості прикладу.
Для угруповання компонент інтерфейсу використовуються контейнери (Container). Для створення основного контейнера для додатка найчастіше використовується контейнер JFrame (є ще JWindows і JApplet). Найпростіше успадкувати від JFrame тим самим отримати доступ до безлічі методів, наприклад:
setBounds (x, y, w, h) - вказує координати верхньої лівої вершини вікна, а також його ширину і висоту.
setResizable (bool) - вказує, чи можна змінювати розмір вікна.
setTitle (str) - встановлює назву вікна.
setVisible (bool) - власне відображає вікно.
setDefaultCloseOperation (operation) - вказує операцію, яка буде проведена при закритті вікна.
Основні елементи управління:
- JLabel - елемент для відображення фіксованого тексту;
- JTextField - простий edit-box;
- JButton - звичайна кнопка (button);
- JCheckBox - елемент вибору (аналог checkbox);
- JRadioButton - радіо кнопка
Як бачите, все досить просто і логічно.
При відображенні елементів управління використовуються спеціальні менеджери - LayoutManager. У всіх LayoutManager'ов є методи для додавання у видалення елементів.
FlowLayout - використовується для послідовного відображення елементів. Якщо елемент не поміщається в конкретну рядок, він відображається в наступній.
GridLayout - відображення елементів у вигляді таблиці з однаковими розмірами вічок.
BorderLayout - використовується при відображенні не більше 5 елементів. Ці елементи розташовуються по краях фрейма і в Ценрт: North, South, East, West, Center.
BoxLayout - відображає елементи у вигляді рядка або колонки.
GridBagLayout - дозволяє призначати місце розташування і розмір кожного елемента. Це найскладніший, але і найефективніший вид відображення.
Варто ще звернути увагу на обробку подій. Для цього використовуються так звані Event Listeners.
Ну все, досить теорії, перейдемо наприклад GUI:
getContentPane повертає контейнер верхнього рівня. ButtonGroup служить для створення групи взаємопов'язаних радіо-кнопок.
Внутрішній клас ButtonActionListener реалізує інтерфейс ActionListener. Для цього необхідно надати імплементацію методу actionPerformed.
JOptionPane служить для відображення діалогових вікон.