请用AWT的布局管理器实现以下任意一个计算器的界面设计
时间: 2024-05-04 21:18:39 浏览: 27
以下是一个基本的计算器界面设计:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener {
private JTextField displayField; // 显示文本框
private JButton[] buttons; // 数字和运算符按钮
public Calculator() {
super("计算器");
initGUI();
}
private void initGUI() {
// 创建显示文本框
displayField = new JTextField();
displayField.setEditable(false);
displayField.setHorizontalAlignment(JTextField.RIGHT);
// 创建数字和运算符按钮
buttons = new JButton[16];
for (int i = 0; i < 10; i++) {
buttons[i] = new JButton(String.valueOf(i));
}
buttons[10] = new JButton("+");
buttons[11] = new JButton("-");
buttons[12] = new JButton("*");
buttons[13] = new JButton("/");
buttons[14] = new JButton("=");
buttons[15] = new JButton("C");
// 设置按钮字体
Font buttonFont = new Font("Arial", Font.PLAIN, 20);
for (int i = 0; i < buttons.length; i++) {
buttons[i].setFont(buttonFont);
}
// 创建面板并设置布局管理器
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4, 5, 5));
buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
// 添加组件到面板
buttonPanel.add(buttons[7]);
buttonPanel.add(buttons[8]);
buttonPanel.add(buttons[9]);
buttonPanel.add(buttons[13]);
buttonPanel.add(buttons[4]);
buttonPanel.add(buttons[5]);
buttonPanel.add(buttons[6]);
buttonPanel.add(buttons[12]);
buttonPanel.add(buttons[1]);
buttonPanel.add(buttons[2]);
buttonPanel.add(buttons[3]);
buttonPanel.add(buttons[11]);
buttonPanel.add(buttons[0]);
buttonPanel.add(buttons[14]);
buttonPanel.add(buttons[15]);
buttonPanel.add(buttons[10]);
contentPane.add(displayField, BorderLayout.NORTH);
contentPane.add(buttonPanel, BorderLayout.CENTER);
// 添加监听器
for (int i = 0; i < buttons.length; i++) {
buttons[i].addActionListener(this);
}
setContentPane(contentPane);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
}
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("=")) {
try {
double result = evaluateExpression(displayField.getText());
displayField.setText(String.valueOf(result));
} catch (Exception ex) {
displayField.setText("Error");
}
} else if (command.equals("C")) {
displayField.setText("");
} else {
displayField.setText(displayField.getText() + command);
}
}
private double evaluateExpression(String expression) throws Exception {
// 计算表达式的值
// 省略具体实现
}
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.setVisible(true);
}
}
```
该计算器界面使用了`BorderLayout`作为主面板的布局管理器,将显示文本框放在北边,按钮面板放在中间。按钮面板使用了`GridLayout`作为布局管理器,将按钮排列成4行4列的网格布局,并在按钮之间添加了5像素的空白边距。