用Java的GUI制作一个按钮式的计算器,实现加减乘除等于,清屏,实现十进制,八进制, 二进制转换,并且设置一个菜单键“帮助”按钮点击显示“苏浩然3210421090”,要求显示结果的文本框不能太小,直接给示例代码
时间: 2024-02-25 21:56:47 浏览: 50
好的,以下是示例代码,你可以根据需要进行修改和优化。
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator extends JFrame {
private JTextField resultTextField;
private JButton clearButton, equalButton;
private JButton addButton, subtractButton, multiplyButton, divideButton;
private JButton decimalButton, octalButton, binaryButton;
private JMenuBar menuBar;
private JMenu helpMenu;
private JMenuItem helpMenuItem;
public Calculator() {
setTitle("计算器");
setSize(400, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
resultTextField = new JTextField(20);
resultTextField.setEditable(false);
panel.add(resultTextField, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4));
addButton = new JButton("+");
addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addOperator("+");
}
});
buttonPanel.add(addButton);
subtractButton = new JButton("-");
subtractButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addOperator("-");
}
});
buttonPanel.add(subtractButton);
multiplyButton = new JButton("*");
multiplyButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addOperator("*");
}
});
buttonPanel.add(multiplyButton);
divideButton = new JButton("/");
divideButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addOperator("/");
}
});
buttonPanel.add(divideButton);
for (int i = 1; i <= 9; i++) {
JButton button = new JButton("" + i);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addNumber(button.getText());
}
});
buttonPanel.add(button);
}
decimalButton = new JButton("DEC");
decimalButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resultTextField.setText("" + Integer.parseInt(resultTextField.getText(), 8));
}
});
buttonPanel.add(decimalButton);
JButton zeroButton = new JButton("0");
zeroButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addNumber("0");
}
});
buttonPanel.add(zeroButton);
clearButton = new JButton("C");
clearButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resultTextField.setText("");
}
});
buttonPanel.add(clearButton);
equalButton = new JButton("=");
equalButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
calculate();
}
});
buttonPanel.add(equalButton);
octalButton = new JButton("OCT");
octalButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resultTextField.setText("" + Integer.toOctalString(Integer.parseInt(resultTextField.getText())));
}
});
buttonPanel.add(octalButton);
binaryButton = new JButton("BIN");
binaryButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resultTextField.setText("" + Integer.toBinaryString(Integer.parseInt(resultTextField.getText())));
}
});
buttonPanel.add(binaryButton);
panel.add(buttonPanel, BorderLayout.CENTER);
menuBar = new JMenuBar();
helpMenu = new JMenu("帮助");
helpMenuItem = new JMenuItem("苏浩然3210421090");
helpMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "苏浩然3210421090");
}
});
helpMenu.add(helpMenuItem);
menuBar.add(helpMenu);
setJMenuBar(menuBar);
add(panel);
setVisible(true);
}
private void addOperator(String operator) {
resultTextField.setText(resultTextField.getText() + operator);
}
private void addNumber(String number) {
resultTextField.setText(resultTextField.getText() + number);
}
private void calculate() {
String expression = resultTextField.getText();
if (expression.contains("+")) {
String[] nums = expression.split("\\+");
int result = Integer.parseInt(nums[0]) + Integer.parseInt(nums[1]);
resultTextField.setText("" + result);
} else if (expression.contains("-")) {
String[] nums = expression.split("-");
int result = Integer.parseInt(nums[0]) - Integer.parseInt(nums[1]);
resultTextField.setText("" + result);
} else if (expression.contains("*")) {
String[] nums = expression.split("\\*");
int result = Integer.parseInt(nums[0]) * Integer.parseInt(nums[1]);
resultTextField.setText("" + result);
} else if (expression.contains("/")) {
String[] nums = expression.split("/");
int result = Integer.parseInt(nums[0]) / Integer.parseInt(nums[1]);
resultTextField.setText("" + result);
}
}
public static void main(String[] args) {
new Calculator();
}
}
```
这个计算器实现了加减乘除四则运算,以及十进制、八进制、二进制转换功能。同时还添加了一个“帮助”菜单,点击后可以显示一个消息框,显示“苏浩然3210421090”。