{
oprationButton[i]=new OperationButton(运算符号[i]); oprationButton[i].addActionListener(this); }
小数点按钮=new Button(\
正负号按钮 =new Button(\ 等号按钮=new Button(\ 求倒数按钮=new Button(\ 退格按钮=new Button(\退格\ 清零按钮=new Button(\
清零按钮.setForeground(Color.red); 退格按钮.setForeground(Color.red); 等号按钮.setForeground(Color.red); 求倒数按钮.setForeground(Color.blue); 正负号按钮.setForeground(Color.blue); 小数点按钮.setForeground(Color.blue); 退格按钮.addActionListener(this); 清零按钮.addActionListener(this); 等号按钮.addActionListener(this); 小数点按钮.addActionListener(this); 正负号按钮.addActionListener(this); 求倒数按钮.addActionListener(this); process=new JTextField(10);
process.setHorizontalAlignment(JTextField.LEFT); process.setForeground(Color.blue);
process.setFont(new Font(\
process.setBorder(new SoftBevelBorder(BevelBorder.LOWERED)); process.setBackground(Color.white); process.setEditable(false);
resultShow=new JTextField(10);
resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue);
resultShow.setFont(new Font(\
resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED)); resultShow.setBackground(Color.white); resultShow.setEditable(false);
panel=new Panel(); panel.setLayout(new GridLayout(5,4)); Panel.add(清零按钮); Panel.add(退格按钮);
panel.add(numberButton[1]); panel.add(numberButton[2]); panel.add(numberButton[3]); Panel.add(numberButton[4]); panel.add(numberButton[5]); panel.add(numberButton[6]);
9
保存计算过程的计算器
Panel.add(numberButton[7]); panel.add(numberButton[8]); panel.add(numberButton[9]); Panel.add(numberButton[0]); Panel.add(oprationButton[0]); panel.add(oprationButton[1]); panel.add(oprationButton[2]); panel.add(oprationButton[3]); panel.add(求倒数按钮); panel.add(正负号按钮); panel.add(小数点按钮); Panel.add(等号按钮);
add(panel,BorderLayout.SOUTH);
add(resultShow,BorderLayout.CENTER); add(process,BorderLayout.NORTH);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e) {
System.exit(0); } }); setVisible(true);
setBounds(100,50,170,190); setResizable(true); validate(); }
public void actionPerformed(ActionEvent e) {
if(e.getSource() instanceof NumberButton) {
NumberButton b=(NumberButton)e.getSource(); if(链表.size()==0) {
int number=b.getNumber(); 链表.add(\ resultShow.setText(\ process.setText(\ 是否按下等号=false; }
else if(链表.size()==1&&是否按下等号==false) {
int number=b.getNumber();
String num=(String)链表.getFirst(); String s=num.concat(\ 链表.set(0,s);
resultShow.setText(s); process.setText(s);
}
else if(链表.size()==1&&是否按下等号==true) {
int number=b.getNumber(); 链表.removeFirst();
链表.add(\ 是否按下等号=false;
resultShow.setText(\ process.setText(\ }
else if(链表.size()==2) {
int number=b.getNumber(); 链表.add(\
resultShow.setText(\
process.setText(\链表.get(0))+((String)链表.get(1))+number); }
else if(链表.size()==3) {
int number=b.getNumber();
String num=(String)链表.getLast(); String s=num.concat(\
process.setText(\链表.get(0))+((String)链表.get(1))+((String)链表.get(2))+number); 链表.set(2,s);
resultShow.setText(s); } }
else if(e.getSource() instanceof OperationButton) {
OperationButton b=(OperationButton)e.getSource(); if(链表.size()==1) {
String fuhao=b.get运算符号();
process.setText(\链表.get(0))+fuhao); 链表.add(fuhao); }
else if(链表.size()==2) {
String fuhao=b.get运算符号(); 链表.set(1,fuhao);
process.setText(\链表.get(0))+((String)链表.get(1)));
11
保存计算过程的计算器
}
else if(链表.size()==3) {
String fuhao=b.get运算符号();
String number1=(String)链表.getFirst(); String number2=(String)链表.getLast(); String 运算符号=(String)链表.get(1);
process.setText(\链表.get(0))+((String)链表.get(1))+((String)链表.get(2))+运算符号); try {
double n1=Double.parseDouble(number1); double n2=Double.parseDouble(number2); double n=0;
if(运算符号.equals(\ {
n=n1+n2; }
else if(运算符号.equals(\ {
n=n1-n2; }
else if(运算符号.equals(\ {
n=n1*n2; }
else if(运算符号.equals(\ {
n=n1/n2; }
链表.clear();
链表.add(\ 链表.add(fuhao); resultShow.setText(\ }
catch(Exception ee) { } } }
else if(e.getSource()==等号按钮) {
是否按下等号=true;
if(链表.size()==1||链表.size()==2) {
String num=(String)链表.getFirst(); resultShow.setText(\ process.setText(num+\
}
else if(链表.size()==3) {
String number1=(String)链表.getFirst(); String number2=(String)链表.getLast(); String 运算符号=(String)链表.get(1);
process.setText(\链表.get(0))+((String)链表.get(1))+((String)链表.get(2))+\ try {
double n1=Double.parseDouble(number1); double n2=Double.parseDouble(number2); double n=0;
if(运算符号.equals(\ {
n=n1+n2; }
else if(运算符号.equals(\ {
n=n1-n2; }
else if(运算符号.equals(\ {
n=n1*n2; }
else if(运算符号.equals(\ {
n=n1/n2; }
resultShow.setText(\ 链表.set(0,\ 链表.removeLast(); 链表.removeLast(); }
catch(Exception ee) { } } }
else if(e.getSource()==小数点按钮) {
if(链表.size()==0) {
是否按下等号=false; }
13