Графічний інтерфейс на 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 служить для відображення діалогових вікон.