commit
9e122a9ec7
@ -0,0 +1,127 @@
|
||||
package xzk;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
public class Calculator extends JFrame implements ActionListener {
|
||||
|
||||
private JTextField num1Field, num2Field, resultField;
|
||||
private JComboBox<String> operatorBox;
|
||||
|
||||
public Calculator() {
|
||||
// 设置窗口标题
|
||||
super("简单计算器");
|
||||
|
||||
// 设置布局
|
||||
setLayout(new BorderLayout());
|
||||
|
||||
// 创建面板
|
||||
JPanel inputPanel = new JPanel(new GridBagLayout());
|
||||
GridBagConstraints gbc = new GridBagConstraints();
|
||||
gbc.insets = new Insets(5, 5, 5, 5); // 设置组件之间的间距
|
||||
|
||||
// 创建输入字段和标签
|
||||
gbc.gridx = 0;
|
||||
gbc.gridy = 0;
|
||||
inputPanel.add(new JLabel("第一个数字:"), gbc);
|
||||
gbc.gridx = 1;
|
||||
num1Field = new JTextField(10);
|
||||
inputPanel.add(num1Field, gbc);
|
||||
|
||||
gbc.gridy = 1;
|
||||
gbc.gridx = 0;
|
||||
inputPanel.add(new JLabel("第二个数字:"), gbc);
|
||||
gbc.gridx = 1;
|
||||
num2Field = new JTextField(10);
|
||||
inputPanel.add(num2Field, gbc);
|
||||
|
||||
gbc.gridy = 2;
|
||||
gbc.gridx = 0;
|
||||
inputPanel.add(new JLabel("操作符:"), gbc);
|
||||
gbc.gridx = 1;
|
||||
operatorBox = new JComboBox<>(new String[]{"+", "-", "*", "/", "%"});
|
||||
inputPanel.add(operatorBox, gbc);
|
||||
|
||||
gbc.gridy = 3;
|
||||
gbc.gridx = 0;
|
||||
inputPanel.add(new JLabel("结果:"), gbc);
|
||||
gbc.gridx = 1;
|
||||
resultField = new JTextField(10);
|
||||
resultField.setEditable(false);
|
||||
inputPanel.add(resultField, gbc);
|
||||
|
||||
// 创建计算按钮
|
||||
JButton calculateButton = new JButton("计算");
|
||||
gbc.gridy = 4;
|
||||
gbc.gridx = 0;
|
||||
gbc.gridwidth = 2;
|
||||
gbc.fill = GridBagConstraints.HORIZONTAL;
|
||||
inputPanel.add(calculateButton, gbc);
|
||||
|
||||
// 添加事件监听器
|
||||
calculateButton.addActionListener(this);
|
||||
|
||||
// 设置面板背景色
|
||||
inputPanel.setBackground(Color.LIGHT_GRAY);
|
||||
|
||||
// 将面板添加到窗口
|
||||
add(inputPanel, BorderLayout.CENTER);
|
||||
|
||||
// 设置窗口属性
|
||||
setSize(400, 300);
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setLocationRelativeTo(null); // 窗口居中显示
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
try {
|
||||
double num1 = Double.parseDouble(num1Field.getText());
|
||||
double num2 = Double.parseDouble(num2Field.getText());
|
||||
String operator = (String) operatorBox.getSelectedItem();
|
||||
double result;
|
||||
|
||||
switch (operator) {
|
||||
case "+":
|
||||
result = num1 + num2;
|
||||
break;
|
||||
case "-":
|
||||
result = num1 - num2;
|
||||
break;
|
||||
case "*":
|
||||
result = num1 * num2;
|
||||
break;
|
||||
case "/":
|
||||
if (num2 != 0) {
|
||||
result = num1 / num2;
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(this, "错误:除数不能为零");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case "%":
|
||||
if (num2 != 0) {
|
||||
result = num1 % num2;
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(this, "错误:除数不能为零");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
JOptionPane.showMessageDialog(this, "无效的操作符!");
|
||||
return;
|
||||
}
|
||||
|
||||
resultField.setText(String.format("%.2f", result));
|
||||
} catch (NumberFormatException ex) {
|
||||
JOptionPane.showMessageDialog(this, "请输入有效的数字");
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
new Calculator();
|
||||
}
|
||||
}
|
Loading…
Reference in new issue