用java写一个小程序,要求包含GUI的知识和代码
时间: 2024-02-24 10:53:20 浏览: 22
好的,下面是一个使用Java GUI库Swing编写的简单程序,主要功能是实现一个简单的计算器。代码如下:
```java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Calculator implements ActionListener {
private JFrame frame;
private JTextField textField;
private JPanel buttonPanel;
private JButton[] buttons;
private String[] buttonLabels = {"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", ".", "=", "/"};
private double result = 0; // 计算结果
private String operator = "+"; // 当前运算符
private boolean startNumber = true; // 是否开始输入数字
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.init();
}
// 初始化程序
private void init() {
frame = new JFrame("Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textField = new JTextField("0");
textField.setHorizontalAlignment(JTextField.RIGHT);
textField.setEditable(false);
buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4, 5, 5));
buttons = new JButton[buttonLabels.length];
for (int i = 0; i < buttonLabels.length; i++) {
buttons[i] = new JButton(buttonLabels[i]);
buttons[i].setPreferredSize(new Dimension(60, 40));
buttons[i].addActionListener(this);
buttonPanel.add(buttons[i]);
}
frame.getContentPane().add(textField, BorderLayout.NORTH);
frame.getContentPane().add(buttonPanel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
// 处理按钮事件
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.matches("[0-9.]")) { // 数字或小数点
if (startNumber) {
textField.setText(command);
startNumber = false;
} else {
textField.setText(textField.getText() + command);
}
} else if (command.matches("[+\\-*/=]")) { // 运算符
if (startNumber) {
if (command.equals("-")) { // 负号
textField.setText("-");
startNumber = false;
} else {
operator = command;
}
} else {
double number = Double.parseDouble(textField.getText());
if (operator.equals("+")) {
result += number;
} else if (operator.equals("-")) {
result -= number;
} else if (operator.equals("*")) {
result *= number;
} else if (operator.equals("/")) {
result /= number;
} else if (operator.equals("=")) {
result = number;
}
textField.setText(String.valueOf(result));
operator = command;
startNumber = true;
}
}
}
}
```
这个程序使用了Java GUI库Swing来实现。程序主要包含一个 `JFrame` 窗口,一个 `JTextField` 文本框和一个 `JPanel` 按钮面板。在 `init()` 方法中,首先创建了窗口和文本框,并将文本框设置为只读。然后创建按钮面板,并添加了所有的按钮,将按钮的大小设置为60x40,并为每个按钮添加了一个事件监听器,用于处理按钮事件。在 `actionPerformed()` 方法中,根据按钮的标签进行相应的处理。如果按钮标签是数字或小数点,则将其添加到文本框中;如果按钮标签是运算符,则根据当前的运算符和数字计算结果,并将结果显示在文本框中。