Swing в Java — это инструментарий графического интерфейса пользователя (GUI), включающий компоненты GUI. Swing предоставляет богатый выбор виджетов и пакетов для создания изысканных компонентов GUI для Java-приложений.
Swing является частью Java Foundation Classes(JFC), который представляет собой API для программирования GUI на Java, обеспечивающий графический интерфейс пользователя. Библиотека Java Swing построена поверх Java Abstract Widget Toolkit (AWT), более старого, зависящего от платформы набора инструментов GUI. Вы можете использовать простые компоненты программирования графического интерфейса Java, такие как кнопки, текстовые поля и т.д., из библиотеки, и вам не придется создавать компоненты с нуля.
В этом учебнике по Java Swing вы узнаете основы Java GUI, такие как…
- Что такое Swing в Java?
- Что такое класс-контейнер?
- Что такое графический интерфейс пользователя в Java?
- Как создать графический интерфейс пользователя в Java на примере
- Менеджер макетов Java
- Java BorderLayout
- Java FlowLayout
- Java GridBagLayout
Иерархическая диаграмма классов Java Swing
Иерархическая диаграмма классов Java Swing
Все компоненты в Java Swing являются JComponent, которые могут быть добавлены в контейнерные классы.
Что такое класс контейнер?
Классы-контейнеры — это классы, на которых могут располагаться другие компоненты. Поэтому для создания графического интерфейса Java Swing нам нужен хотя бы один объект-контейнер. Существует 3 типа контейнеров Java Swing.
- Панель: Это чистый контейнер, который сам по себе не является окном. Единственная цель панели — организовать компоненты на окне.
- Фрейм (Frame): Это полностью функционирующее окно с заголовком и значками.
- Диалог: Его можно представить как всплывающее окно, которое появляется, когда необходимо отобразить сообщение. Это не полностью функционирующее окно, как фрейм.
Что такое графический интерфейс пользователя в Java?
GUI (графический интерфейс пользователя) в Java — это простой в использовании конструктор визуального восприятия для Java-приложений. Он состоит в основном из графических компонентов, таких как кнопки, ярлыки, окна и т.д., с помощью которых пользователь может взаимодействовать с приложением. GUI играет важную роль в создании простых интерфейсов для Java-приложений.
Как создать графический интерфейс пользователя в Java на примере
В данном учебнике по графическому интерфейсу Java, давайте разберемся, как создать графический интерфейс на Java на примере Swings.
Шаг 1) Скопируйте код в редактор
На первом этапе скопируйте следующий код в редактор.
1 2 3 4 5 6 7 8 9 10 11 |
import javax.swing.*; class gui{ public static void main(String args[]){ JFrame frame = new JFrame("My First GUI"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300,300); JButton button = new JButton("Press"); frame.getContentPane().add(button); // Adds Button to content pane of frame frame.setVisible(true); } } |
Шаг 2) Запуск кода
Следующий шаг: Сохраните, скомпилируйте и запустите код.
Шаг 3) Скопируйте следующий код в редактор
Теперь давайте добавим кнопку в наш фрейм. Скопируйте следующий код в редактор из приведенного примера пользовательского интерфейса на Java.
1 2 3 4 5 6 7 8 9 10 11 |
import javax.swing.*; class gui{ public static void main(String args[]){ JFrame frame = new JFrame("My First GUI"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300,300); JButton button1 = new JButton("Press"); frame.getContentPane().add(button1); frame.setVisible(true); } } |
Шаг 4) Выполнить код
Далее выполните код. Вы увидите большую кнопку.
Шаг 5) Добавьте две кнопки
Как насчет добавления двух кнопок? Скопируйте следующий код в редактор.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import javax.swing.*; class gui{ public static void main(String args[]){ JFrame frame = new JFrame("My First GUI"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300,300); JButton button1 = new JButton("Button 1"); JButton button2 = new JButton("Button 2"); frame.getContentPane().add(button1); frame.getContentPane().add(button2); frame.setVisible(true); } } |
Шаг 6) Сохранить и запустить программу
Далее сохраните, скомпилируйте и запустите программу.
Шаг 7) Проверьте вывод
Неожиданный вывод =? Кнопки накладываются друг на друга.
Менеджер компоновки Java
Менеджер компоновки используется для компоновки (или расположения) компонентов GUI Java внутри контейнера. Существует множество менеджеров компоновки, но наиболее часто используемые из них — это BorderLayout
.
Java BorderLayout
BorderLayout размещает компоненты в пяти областях: сверху, снизу, слева, справа и по центру. Это менеджер компоновки по умолчанию для каждого JFrame
.
Java FlowLayout
FlowLayout — это менеджер компоновки по умолчанию для каждой JPanel. Он просто выстраивает компоненты в один ряд один за другим.
Java GridBagLayout
Это более сложная из всех компоновок. Она выравнивает компоненты, размещая их в сетке ячеек, позволяя компонентам занимать более одной ячейки.
Шаг 8) Создание рамки чата
Как насчет создания рамки чата, как показано ниже?
Попробуйте самостоятельно написать код, прежде чем смотреть на программу ниже.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
// Обычно вам потребуются пакеты swing и awt, // даже если вы работаете только с Swing. import javax.swing.*; import java.awt.*; class gui { public static void main(String args[]) { // Создание каркаса JFrame frame = new JFrame("Chat Frame"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 400); // Создание панели меню и добавление компонентов JMenuBar mb = new JMenuBar(); JMenu m1 = new JMenu("FILE"); JMenu m2 = new JMenu("Help"); mb.add(m1); mb.add(m2); JMenuItem m11 = new JMenuItem("Открыть"); JMenuItem m22 = new JMenuItem("Сохранить как"); m1.add(m11); m1.add(m22); // Создание панели внизу и добавление компонентов JPanel panel = new JPanel(); // панель не видна при выводе JLabel label = new JLabel("Введите текст"); JTextField tf = new JTextField(10); // принимает до 10 символов JButton send = new JButton("Отправить"); JButton reset = new JButton("Сброс"); panel.add(label); // Компоненты, добавленные с помощью макета Flow Layout panel.add(tf); panel.add(send); panel.add(reset); // Текстовая область по центру JTextArea ta = new JTextArea(); // Добавление компонентов в рамку. frame.getContentPane().add(BorderLayout.SOUTH, panel); frame.getContentPane().add(BorderLayout.NORTH, mb); frame.getContentPane().add(BorderLayout.CENTER, ta); frame.setVisible(true); } } |