Учебное пособие по Java Swing: как создать графический интерфейс на Java с примерами

Содержание:

Anonim

Что такое Swing в Java?

Swing в Java - это набор инструментов графического интерфейса пользователя (GUI), который включает компоненты GUI. Swing предоставляет богатый набор виджетов и пакетов для создания сложных компонентов графического интерфейса пользователя для приложений Java. Swing является частью Java Foundation Classes (JFC), который представляет собой API для программ Java, которые предоставляют графический интерфейс.

Библиотека Java Swing построена на основе Java Abstract Widget Toolkit ( AWT ), более старого, зависящего от платформы инструментария графического интерфейса пользователя. Вы можете использовать программные компоненты Java GUI, такие как кнопка, текстовое поле и т. Д. Из библиотеки, и вам не нужно создавать компоненты с нуля.

В этом руководстве по Java Swing вы узнаете:

  • Что такое Swing в Java?
  • Что такое контейнерный класс?
  • Что такое графический интерфейс в Java?
  • Пример графического интерфейса Java
  • Менеджер компоновки Java
  • Java BorderLayout
  • Java FlowLayout
  • Java GridBagLayout

Схема иерархии классов Java Swing

Диаграмма иерархии классов Java Swing

Все компоненты в Java Swing - это JComponent, который можно добавлять в классы-контейнеры.

Что такое контейнерный класс?

Классы-контейнеры - это классы, на которых могут быть другие компоненты. Итак, для создания графического интерфейса Java нам понадобится хотя бы один объект-контейнер. Есть 3 типа контейнеров Java Swing.

  1. Панель : это чистый контейнер, а не окно. Единственная цель Panel - организовать компоненты в окне.
  2. Фрейм : это полностью функционирующее окно со своим заголовком и значками.
  3. Диалог : это можно представить как всплывающее окно, которое выскакивает, когда необходимо отобразить сообщение. Это не полностью функционирующее окно, как Frame.

Что такое графический интерфейс в Java?

GUI (графический пользовательский интерфейс) в Java - это простой в использовании конструктор визуальных интерфейсов для приложений Java. Он в основном состоит из графических компонентов, таких как кнопки, метки, окна и т. Д., Через которые пользователь может взаимодействовать с приложением. Графический интерфейс пользователя играет важную роль в создании простых интерфейсов для приложений Java.

Пример графического интерфейса Java

Теперь, в этом учебном пособии по Swing Java, давайте разберемся с графическим интерфейсом пользователя на примерах Java Swing.

Пример : чтобы изучить программирование графического интерфейса пользователя Java в этом учебнике графического интерфейса пользователя Java Шаг 1) Скопируйте следующий код в редактор.

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 frameframe.setVisible(true);}}

Шаг 2) Сохраните, скомпилируйте и запустите код.Шаг 3) Теперь давайте добавим кнопку в наш фрейм. Скопируйте следующий код в редактор из данного примера графического интерфейса Java

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) Как насчет добавления двух кнопок? Скопируйте следующий код в редактор.

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

Менеджер компоновки используется для компоновки (или упорядочивания) Java-компонентов графического интерфейса пользователя внутри контейнера. Есть много менеджеров компоновки, но наиболее часто используемые:

Java BorderLayout

BorderLayoutКомпоненты A размещаются максимум в пяти областях: сверху, снизу, слева, справа и по центру. Это менеджер компоновки по умолчанию для каждого java JFrame.

Java FlowLayout

FlowLayoutявляется менеджером компоновки по умолчанию для каждого JPanel. Он просто выкладывает компоненты в одну строку один за другим.

Java GridBagLayout

Это самый сложный из всех макетов. Он выравнивает компоненты, помещая их в сетку ячеек, позволяя компонентам занимать более одной ячейки.

Шаг 8) Как насчет создания фрейма чата, как показано ниже?

Попробуйте написать код самостоятельно, прежде чем смотреть программу ниже.

//Usually you will require both swing and awt packages// even if you are working with just swings.import javax.swing.*;import java.awt.*;class gui {public static void main(String args[]) {//Creating the FrameJFrame frame = new JFrame("Chat Frame");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 400);//Creating the MenuBar and adding componentsJMenuBar mb = new JMenuBar();JMenu m1 = new JMenu("FILE");JMenu m2 = new JMenu("Help");mb.add(m1);mb.add(m2);JMenuItem m11 = new JMenuItem("Open");JMenuItem m22 = new JMenuItem("Save as");m1.add(m11);m1.add(m22);//Creating the panel at bottom and adding componentsJPanel panel = new JPanel(); // the panel is not visible in outputJLabel label = new JLabel("Enter Text");JTextField tf = new JTextField(10); // accepts upto 10 charactersJButton send = new JButton("Send");JButton reset = new JButton("Reset");panel.add(label); // Components Added using Flow Layoutpanel.add(tf);panel.add(send);panel.add(reset);// Text Area at the CenterJTextArea ta = new JTextArea();//Adding Components to the frame.frame.getContentPane().add(BorderLayout.SOUTH, panel);frame.getContentPane().add(BorderLayout.NORTH, mb);frame.getContentPane().add(BorderLayout.CENTER, ta);frame.setVisible(true);}}