import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
class TestCalculator {
JFrame jf=new JFrame("calculator");
JPanel jp=new JPanel();
JPanel jpn=new JPanel();
JTextArea jta=new JTextArea(2,14);
JButton bt;
JButton reset=new JButton("Reset");
String s=new String("1234567890.=+-*/");
String numberOne="";
String numberTwo="";
double number=0d;
double result=0d;
char sign;
public TestCalculator() {
jf.setSize(250,300);
jp.setLayout(new GridLayout(4,4));
jta.setEditable(false);
ArrayList list=new ArrayList();
for(int i=0;i<16;i++){
bt=new JButton(s.charAt(i)+"");
jp.add(bt);
list.add(bt);
}
jpn.setLayout(new FlowLayout());
jpn.add(jta);
jpn.add(reset);
jf.add(jpn,"North");
jf.add(jp);
jta.setEditable(false);
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
reset.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
reSet();
}
});
Iterator it=list.iterator();
while(it.hasNext()){
final JButton o=(JButton)it.next();
o.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
/**判斷被點擊的按鈕所代表的String是不是數字0-9*/
if(o.getText().matches("\\d")||o.getText().equals(".")){
jta.append(o.getText());
getNumberTwo(o.getText());
}else{
getNumberOne();
double number1;
double number2;
if(numberOne.equals("")){
number1=0;
}else{
number1=Double.parseDouble(numberOne);
}
if(numberTwo.equals("")){
number2=number;
}else{
number2=Double.parseDouble(numberTwo);
}
switch(sign){
case '+':result=number1+number2;break;
case '-':result=number1-number2;break;
case '*':result=number1*number2;break;
case '/':result=number1/number2;break;
case '=':break;
default :result=number1;
}
number=number2;
numberTwo="";
jta.setText(result+"");
getSign(o.getText());
if(!o.getText().equals("="))
jta.append(o.getText());
}
}
});
}
}
public void getNumberTwo(String s){
numberTwo+=s;
// System.out.println("numberTwo:"+numberTwo);
}
public void getNumberOne(){
if(result==0){
numberOne=numberTwo;
}else{
numberOne=result+"";
}
// System.out.println("numberOne: "+numberOne);
}
public void getSign(String s){
sign=s.charAt(0);
// System.out.println("sign:"+sign);
}
public void reSet(){
numberOne="";
numberTwo="";
sign=0;
result=0;
jta.setText("");
}
}
public class Calculator2{
public static void main(String[] agrs){
TestCalculator calculator=new TestCalculator();
}
}
計算器代碼,用swing做的