Урок 29: Создание простых оконных приложений
В этом уроке мы рассмотрим, как создавать простые оконные приложения на Java с использованием библиотеки Swing. Мы узнаем, как добавлять различные компоненты в окно, такие как кнопки, текстовые поля и метки, а также как обрабатывать события, такие как нажатие кнопок. Создание графических интерфейсов позволяет улучшить взаимодействие пользователя с программой и сделать её более удобной и интуитивно понятной.
Создание основного окна
Для создания основного окна используется класс JFrame
. Рассмотрим пример создания окна с несколькими компонентами:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SimpleWindow {
public static void main(String[] args) {
JFrame frame = new JFrame("Простое оконное приложение");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JLabel label = new JLabel("Введите текст:");
JTextField textField = new JTextField(20);
JButton button = new JButton("Отправить");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Введенный текст: " + textField.getText());
}
});
panel.add(label);
panel.add(textField);
panel.add(button);
frame.add(panel);
frame.setVisible(true);
}
}
Результат выполнения
Откроется окно с меткой "Введите текст:", текстовым полем и кнопкой "Отправить". При нажатии на кнопку введенный текст будет выведен в консоль.
Добавление дополнительных компонентов
Вы можете добавлять различные компоненты в ваше окно, такие как переключатели, флажки и списки. Пример добавления флажка:
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CheckboxExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Пример с флажком");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JLabel label = new JLabel("Введите текст:");
JTextField textField = new JTextField(20);
JCheckBox checkBox = new JCheckBox("Согласен с условиями");
JButton button = new JButton("Отправить");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (checkBox.isSelected()) {
System.out.println("Введенный текст: " + textField.getText());
} else {
System.out.println("Вы должны согласиться с условиями");
}
}
});
panel.add(label);
panel.add(textField);
panel.add(checkBox);
panel.add(button);
frame.add(panel);
frame.setVisible(true);
}
}
Результат выполнения
Откроется окно с меткой "Введите текст:", текстовым полем, флажком и кнопкой "Отправить". При нажатии на кнопку текст будет выведен в консоль, только если установлен флажок "Согласен с условиями".
Упражнения
Упражнение 1: Окно с двумя кнопками
Напишите программу, которая создает окно с двумя кнопками "Показать" и "Скрыть". При нажатии кнопки "Показать" в окне должна отображаться метка с текстом "Привет!", а при нажатии кнопки "Скрыть" метка должна исчезать.
Решение:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ShowHideExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Окно с двумя кнопками");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JLabel label = new JLabel("Привет!");
label.setVisible(false); // Изначально метка скрыта
JButton showButton = new JButton("Показать");
JButton hideButton = new JButton("Скрыть");
showButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
label.setVisible(true);
}
});
hideButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
label.setVisible(false);
}
});
panel.add(showButton);
panel.add(hideButton);
panel.add(label);
frame.add(panel);
frame.setVisible(true);
}
}
Объяснение: Программа создает окно с двумя кнопками "Показать" и "Скрыть". При нажатии на кнопку "Показать" метка "Привет!" становится видимой, а при нажатии на кнопку "Скрыть" — скрывается.
Упражнение 2: Окно с переключателем
Напишите программу, которая создает окно с переключателем и кнопкой "Проверить". При нажатии кнопки должна выводиться информация, установлен ли переключатель.
Решение:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class RadioButtonExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Окно с переключателем");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JLabel label = new JLabel("Выбрано: Нет");
JRadioButton radioButton = new JRadioButton("Выбрать");
JButton button = new JButton("Проверить");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (radioButton.isSelected()) {
label.setText("Выбрано: Да");
} else {
label.setText("Выбрано: Нет");
}
}
});
panel.add(radioButton);
panel.add(button);
panel.add(label);
frame.add(panel);
frame.setVisible(true);
}
}
Объяснение: Программа создает окно с переключателем и кнопкой "Проверить". При нажатии кнопки выводится информация о состоянии переключателя (выбран или нет).