Урок 28: Введение в GUI
Графический интерфейс пользователя (GUI) позволяет создавать визуальные приложения, с которыми пользователи могут взаимодействовать. В Java для создания GUI используется библиотека Swing, которая предоставляет набор компонентов, таких как кнопки, текстовые поля, панели и многое другое. В этом уроке мы рассмотрим основы создания простого окна с использованием Swing.
Создание простого окна
Для создания простого окна в Java используется класс JFrame
. Рассмотрим пример создания окна с кнопкой:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class SimpleGUI {
public static void main(String[] args) {
JFrame frame = new JFrame("Пример GUI");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JButton button = new JButton("Нажми меня");
panel.add(button);
frame.add(panel);
frame.setVisible(true);
}
}
Результат выполнения
Откроется окно с кнопкой "Нажми меня".
Добавление обработчика событий
Для обработки событий, таких как нажатие кнопки, используется интерфейс ActionListener
. Пример добавления обработчика событий для кнопки:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class EventHandlingExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Пример обработчика событий");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JButton button = new JButton("Нажми меня");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Кнопка нажата!");
}
});
panel.add(button);
frame.add(panel);
frame.setVisible(true);
}
}
Результат выполнения
При нажатии кнопки в консоль будет выведено сообщение "Кнопка нажата!".
Упражнения
Упражнение 1: Создание окна с текстовым полем
Напишите программу, которая создает окно с текстовым полем и кнопкой. При нажатии кнопки в консоль должно выводиться содержимое текстового поля.
Решение:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TextFieldExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Пример с текстовым полем");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JTextField textField = new JTextField(10);
JButton button = new JButton("Показать текст");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Введенный текст: " + textField.getText());
}
});
panel.add(textField);
panel.add(button);
frame.add(panel);
frame.setVisible(true);
}
}
Объяснение: Программа создает окно с текстовым полем и кнопкой. При нажатии кнопки в консоль выводится содержимое текстового поля.
Упражнение 2: Создание окна с меткой и кнопкой
Напишите программу, которая создает окно с меткой и кнопкой. При нажатии кнопки текст метки должен изменяться на "Кнопка нажата!".
Решение:
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 LabelExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Пример с меткой");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JLabel label = new JLabel("Нажмите кнопку");
JButton button = new JButton("Нажми меня");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
label.setText("Кнопка нажата!");
}
});
panel.add(label);
panel.add(button);
frame.add(panel);
frame.setVisible(true);
}
}
Объяснение: Программа создает окно с меткой и кнопкой. При нажатии кнопки текст метки изменяется на "Кнопка нажата!".