帮我使用java编写一个基于gui的计算器框架,能够实现四则运算,指数运算、对数运算,三角函数运算
时间: 2024-05-01 17:22:14 浏览: 13
好的,我可以为你提供一个基本的GUI计算器框架,支持基本的四则运算和指数运算。对于三角函数和对数运算,你可以根据这个框架进行扩展。
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CalculatorGUI extends JFrame implements ActionListener {
private JPanel panel;
private JTextField displayField;
private JButton[] digitButtons;
private JButton[] operatorButtons;
private JButton clearButton;
private JButton equalsButton;
private String currentOperator;
private double currentValue;
public CalculatorGUI() {
setTitle("Calculator");
setSize(300, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
panel = new JPanel(new GridLayout(4, 4));
displayField = new JTextField("0", 20);
digitButtons = new JButton[10];
operatorButtons = new JButton[5];
for (int i = 0; i < digitButtons.length; i++) {
digitButtons[i] = new JButton(String.valueOf(i));
digitButtons[i].addActionListener(this);
}
operatorButtons[0] = new JButton("+");
operatorButtons[1] = new JButton("-");
operatorButtons[2] = new JButton("*");
operatorButtons[3] = new JButton("/");
operatorButtons[4] = new JButton("^");
for (JButton button : operatorButtons) {
button.addActionListener(this);
}
clearButton = new JButton("C");
equalsButton = new JButton("=");
clearButton.addActionListener(this);
equalsButton.addActionListener(this);
panel.add(digitButtons[1]);
panel.add(digitButtons[2]);
panel.add(digitButtons[3]);
panel.add(operatorButtons[0]);
panel.add(digitButtons[4]);
panel.add(digitButtons[5]);
panel.add(digitButtons[6]);
panel.add(operatorButtons[1]);
panel.add(digitButtons[7]);
panel.add(digitButtons[8]);
panel.add(digitButtons[9]);
panel.add(operatorButtons[2]);
panel.add(digitButtons[0]);
panel.add(clearButton);
panel.add(equalsButton);
panel.add(operatorButtons[3]);
add(displayField, BorderLayout.NORTH);
add(panel, BorderLayout.CENTER);
setVisible(true);
}
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
if (command.matches("\\d")) {
if (displayField.getText().equals("0")) {
displayField.setText(command);
} else {
displayField.setText(displayField.getText() + command);
}
} else if (command.equals("+")) {
currentValue = Double.parseDouble(displayField.getText());
currentOperator = "+";
displayField.setText("0");
} else if (command.equals("-")) {
currentValue = Double.parseDouble(displayField.getText());
currentOperator = "-";
displayField.setText("0");
} else if (command.equals("*")) {
currentValue = Double.parseDouble(displayField.getText());
currentOperator = "*";
displayField.setText("0");
} else if (command.equals("/")) {
currentValue = Double.parseDouble(displayField.getText());
currentOperator = "/";
displayField.setText("0");
} else if (command.equals("^")) {
currentValue = Double.parseDouble(displayField.getText());
currentOperator = "^";
displayField.setText("0");
} else if (command.equals("=")) {
double newValue = Double.parseDouble(displayField.getText());
if (currentOperator.equals("+")) {
currentValue += newValue;
} else if (currentOperator.equals("-")) {
currentValue -= newValue;
} else if (currentOperator.equals("*")) {
currentValue *= newValue;
} else if (currentOperator.equals("/")) {
currentValue /= newValue;
} else if (currentOperator.equals("^")) {
currentValue = Math.pow(currentValue, newValue);
}
displayField.setText(String.valueOf(currentValue));
} else if (command.equals("C")) {
displayField.setText("0");
currentValue = 0;
currentOperator = "";
}
}
public static void main(String[] args) {
new CalculatorGUI();
}
}
```
这个代码可以创建一个包含数字按钮、运算符按钮、清除按钮和等于按钮的基本计算器。当用户按下数字按钮时,数字将显示在文本框中。当用户按下运算符按钮时,当前值和运算符将保存下来,文本框将被清空以等待下一个操作数的输入。当用户按下等于按钮时,当前运算符和值将应用于当前值和新值,结果将被显示在文本框中。