package com.mzxy.jsq;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
public class ComputerPad extends JFrame implements ActionListener {
private NumberButton[] numberButton;
private OperationButton[] operationButton;
private JButton dotButton, signButton, backspaceButton, reciprocalButton,
equalButton, clearZeroButton;
private JPanel panel;
private JTextField resultShow;
private String operators[] = { “+”, “-”, “*”, “/” };
private LinkedList dataList;
private boolean equalButtonIsPressed = false;
public ComputerPad() {
super(“计算器”);
dataList = new LinkedList();
numberButton = new NumberButton[10];
for (int i = 0; i <= 9; i++) {
numberButton = new NumberButton(i);
numberButton.addActionListener(this);
}
operationButton = new OperationButton[4];
for (int i = 0; i < 4; i++) {
operationButton = new OperationButton(operators);
operationButton.addActionListener(this);
}
dotButton = new JButton(“.”);
signButton = new JButton(“+/-”);
equalButton = new JButton(“=”);
reciprocalButton = new JButton(“1/x”);
backspaceButton = new JButton(“退格”);
clearZeroButton = new JButton(“C”);
clearZeroButton.setForeground(Color.red);
backspaceButton.setForeground(Color.red);
reciprocalButton.setForeground(Color.red);
equalButton.setForeground(Color.blue);
signButton.setForeground(Color.blue);
dotButton.setForeground(Color.blue);
clearZeroButton.addActionListener(this);
backspaceButton.addActionListener(this);
reciprocalButton.addActionListener(this);
equalButton.addActionListener(this);
signButton.addActionListener(this);
dotButton.addActionListener(this);
resultShow = new JTextField(10);
resultShow.setHorizontalAlignment(JTextField.RIGHT);
resultShow.setForeground(Color.blue);
resultShow.setFont(new Font(“TimesRoman”, Font.PLAIN, 14));
resultShow.setBorder(new BevelBorder(BevelBorder.LOWERED));
resultShow.setBackground(Color.white);
resultShow.setEditable(false);
panel = new JPanel();
panel.setLayout(new GridLayout(4, 5));
// 面板中的第一行
panel.add(numberButton[1]);
panel.add(numberButton[2]);
panel.add(numberButton[3]);
panel.add(operationButton[0]);
panel.add(clearZeroButton);
// 面板中的第2行
panel.add(numberButton[4]);
panel.add(numberButton[5]);
panel.add(numberButton[6]);
panel.add(operationButton[1]);
panel.add(backspaceButton);
// 面板中的第3行
panel.add(numberButton[7]);
panel.add(numberButton[8]);
panel.add(numberButton[9]);
panel.add(operationButton[2]);
panel.add(reciprocalButton);
// 面板中的第4行
panel.add(numberButton[0]);
panel.add(signButton);
panel.add(dotButton);
panel.add(operationButton[3]);
panel.add(equalButton);
add(panel, BorderLayout.CENTER);
add(resultShow, BorderLayout.NORTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setBounds(100, 50, 340, 180);
setResizable(false);
validate();
}
public static void main(String[] args) {
new ComputerPad();
}
@Override
public void actionPerformed(ActionEvent e) {
// 1.如果用户按下的是数字按钮
if (e.getSource() instanceof NumberButton) {
NumberButton b = (NumberButton) e.getSource();
String s = “” + b.getNumber();
if (dataList.size() == 0) {
dataList.add(s);
resu