Урок 47: Разработка графического приложения
Графические приложения предоставляют пользователям более удобный и интуитивно понятный интерфейс. В Java для разработки графических приложений используется библиотека Swing. В этом уроке мы рассмотрим, как создать простое графическое приложение с использованием Swing, включая создание окна, добавление компонентов и обработку событий.
Создание простого графического приложения
Для начала создадим простое окно с кнопкой, которая будет выводить сообщение при нажатии. Вот пример кода для создания такого приложения:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SimpleGUIApp {
public static void main(String[] args) {
JFrame frame = new JFrame("Simple GUI Application");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Click Me");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(frame, "Button Clicked!");
}
});
frame.getContentPane().add(button);
frame.setVisible(true);
}
}
Результат выполнения
Окно с кнопкой "Click Me". При нажатии на кнопку выводится сообщение "Button Clicked!"
Упражнения
Упражнение 1: Добавление текстового поля
Создайте графическое приложение с текстовым полем и кнопкой. При нажатии на кнопку программа должна выводить текст, введенный в текстовое поле, в диалоговом окне.
Решение:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TextFieldApp {
public static void main(String[] args) {
JFrame frame = new JFrame("Text Field Application");
frame.setSize(400, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textField = new JTextField();
JButton button = new JButton("Show Text");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String text = textField.getText();
JOptionPane.showMessageDialog(frame, "You entered: " + text);
}
});
frame.getContentPane().add(textField, BorderLayout.CENTER);
frame.getContentPane().add(button, BorderLayout.SOUTH);
frame.setVisible(true);
}
}
Объяснение: В этом примере создается окно с текстовым полем и кнопкой. При нажатии на кнопку выводится сообщение с текстом, введенным в текстовое поле.
Упражнение 2: Калькулятор с графическим интерфейсом
Создайте графическое приложение "Калькулятор", которое будет выполнять простые арифметические операции (сложение, вычитание, умножение, деление). Приложение должно содержать два текстовых поля для ввода чисел, кнопки для выбора операции и метку для вывода результата.
Решение:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CalculatorApp {
public static void main(String[] args) {
JFrame frame = new JFrame("Calculator");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(5, 2));
JLabel label1 = new JLabel("Number 1:");
JTextField textField1 = new JTextField();
JLabel label2 = new JLabel("Number 2:");
JTextField textField2 = new JTextField();
JLabel labelResult = new JLabel("Result:");
JTextField textFieldResult = new JTextField();
textFieldResult.setEditable(false);
JButton buttonAdd = new JButton("+");
JButton buttonSubtract = new JButton("-");
JButton buttonMultiply = new JButton("*");
JButton buttonDivide = new JButton("/");
buttonAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
double num1 = Double.parseDouble(textField1.getText());
double num2 = Double.parseDouble(textField2.getText());
double result = num1 + num2;
textFieldResult.setText(String.valueOf(result));
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(frame, "Invalid input!");
}
}
});
buttonSubtract.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
double num1 = Double.parseDouble(textField1.getText());
double num2 = Double.parseDouble(textField2.getText());
double result = num1 - num2;
textFieldResult.setText(String.valueOf(result));
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(frame, "Invalid input!");
}
}
});
buttonMultiply.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
double num1 = Double.parseDouble(textField1.getText());
double num2 = Double.parseDouble(textField2.getText());
double result = num1 * num2;
textFieldResult.setText(String.valueOf(result));
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(frame, "Invalid input!");
}
}
});
buttonDivide.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
double num1 = Double.parseDouble(textField1.getText());
double num2 = Double.parseDouble(textField2.getText());
if (num2 != 0) {
double result = num1 / num2;
textFieldResult.setText(String.valueOf(result));
} else {
JOptionPane.showMessageDialog(frame, "Division by zero!");
}
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(frame, "Invalid input!");
}
}
});
panel.add(label1);
panel.add(textField1);
panel.add(label2);
panel.add(textField2);
panel.add(buttonAdd);
panel.add(buttonSubtract);
panel.add(buttonMultiply);
panel.add(buttonDivide);
panel.add(labelResult);
panel.add(textFieldResult);
frame.getContentPane().add(panel);
frame.setVisible(true);
}
}
Объяснение: В этом примере создается графическое приложение "Калькулятор" с двумя текстовыми полями для ввода чисел, кнопками для выбора арифметической операции и меткой для отображения результата. Программа выполняет арифметические операции и выводит результат.