Java Swing JFrame: Создаем ПК приложения с нуля

Этот урок посвящен созданию приложения с графическим интерфейсом на Java, используя библиотеку Swing.

Выбор библиотеки

Для построения графических интерфейсов в Java доступны различные библиотеки. В этом уроке используется встроенная библиотека Java Swing. Хотя Swing не идеален, его преимущество — отсутствие необходимости в дополнительной установке. Для более сложных приложений рекомендуется JavaFX, позволяющая создавать кроссплатформенные приложения (Windows, macOS, Linux).

Создание и настройка приложения

Создадим класс ContactForm, наследующий JFrame:

public class ContactForm extends JFrame {
    private JButton sendButton; // Добавим поле для кнопки

    public ContactForm() {
        super("Контактная форма"); // Заголовок окна
        setBounds(200, 100, 250, 100); // Положение и размер окна (x, y, ширина, высота)
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Закрытие приложения при закрытии окна
        Container container = getContentPane(); // Получение контейнера для размещения компонентов
        container.setLayout(new GridLayout(3, 2, 2, 2)); // Используем GridLayout с 3 рядами, 2 столбцами, отступами 2 пикселя

        JLabel nameLabel = new JLabel("Введите имя:");
        JTextField nameField = new JTextField(1); // 1 колонка
        JLabel emailLabel = new JLabel("Введите email:");
        JTextField emailField = new JTextField(1); // 1 колонка
        JRadioButton male = new JRadioButton("Мужской", true);
        JRadioButton female = new JRadioButton("Женский");
        ButtonGroup group = new ButtonGroup();
        group.add(male);
        group.add(female);
        JCheckBox checkBox = new JCheckBox("Согласен", false);
        sendButton = new JButton("Отправить"); // Инициализируем кнопку

        container.add(nameLabel);
        container.add(nameField);
        container.add(emailLabel);
        container.add(emailField);
        container.add(male);
        container.add(female);
        container.add(checkBox);
        container.add(sendButton);

        sendButton.addActionListener(new ButtonEventManger()); // Добавляем обработчик событий здесь
    }
}

Метод setBounds задает положение и размер приложения. setDefaultCloseOperation определяет действие при закрытии окна (здесь — завершение приложения). getContentPane() возвращает контейнер для элементов интерфейса. GridLayout организует элементы в сетке, задавая количество рядов и столбцов, а также отступы.

Обработка событий

Вложенный класс обрабатывает нажатие кнопки:

private class ButtonEventManger implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        String name = nameField.getText();
        String email = emailField.getText();
        String gender = male.isSelected() ? "Мужской" : "Женский";
        boolean checkBoxValue = checkBox.isSelected();

        JOptionPane.showMessageDialog(null, "Привет, " + name + "!\nВаша почта: " + email + "\nВаш пол: " + gender + "\nВы согласны: " + checkBoxValue, "Приветствие", JOptionPane.PLAIN_MESSAGE);
    }
}

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

Запуск приложения

Запуск осуществляется в методе main:

public static void main(String[] args) {
    ContactForm form = new ContactForm();
    form.setVisible(true);
}

setVisible(true) отображает окно.

Создано простое приложение на Java Swing, демонстрирующее основные элементы графического интерфейса и обработку событий. Для более сложных приложений рекомендуется использовать JavaFX.

Что будем искать? Например,программа