java GUI计算器

来源:互联网 发布:校园网mac地址被修改 编辑:程序博客网 时间:2024/06/06 01:45
import java.awt.*;import javax.swing.*;import java.awt.event.*;public class jisuanqi extends JFrame implements ActionListener{    private JTextField jtf1;    private JButton btn[];    private String s1="";    private int n=0;    private int[] fh=new int[10];String[] sr;double sum;    JPanel p1=new JPanel(),           p2=new JPanel();    public jisuanqi(){        String str[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};         btn=new JButton[str.length];     //创建按钮数组         for(int i=0;i<str.length;i++){           btn[i]=new JButton(str[i]);           p2.add(btn[i]);           btn[i].addActionListener(this);        }        setTitle("计算器");                JLabel a=new JLabel();        JLabel b=new JLabel();        JLabel c=new JLabel();        JLabel d=new JLabel();        p1.setLayout(new BorderLayout(15,15));        p1.add(jtf1=new JTextField("0",20),BorderLayout.CENTER);        jtf1.setHorizontalAlignment(JTextField.RIGHT);      //右对齐        p1.add(a,BorderLayout.PAGE_START);        p1.add(b,BorderLayout.LINE_START);        p1.add(c,BorderLayout.LINE_END);        p1.add(d,BorderLayout.PAGE_END);        jtf1.setEditable(false);                   //文本框不可编辑        p2.setLayout(new GridLayout(4,4,2,2));        setLayout(new BorderLayout(2,2));           add(p1,BorderLayout.NORTH);        add(p2,BorderLayout.CENTER);        pack();        setVisible(true);        setLocationRelativeTo(null);        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }    public void actionPerformed(ActionEvent e){        String cmd=e.getActionCommand();        if(cmd.equals("1")){            s1+='1';jtf1.setText(s1);        }        else if(cmd.equals("2")){            s1+='2';jtf1.setText(s1);        }        else if(cmd.equals("3")){            s1+='3';jtf1.setText(s1);        }        else if(cmd.equals("4")){            s1+='4';jtf1.setText(s1);        }        else if(cmd.equals("5")){            s1+='5';jtf1.setText(s1);        }        else if(cmd.equals("6")){            s1+='6';jtf1.setText(s1);        }        else if(cmd.equals("7")){            s1+='7';jtf1.setText(s1);        }        else if(cmd.equals("8")){            s1+='8';jtf1.setText(s1);        }        else if(cmd.equals("9")){            s1+='9';jtf1.setText(s1);        }        else if(cmd.equals("0")){            s1+='0';jtf1.setText(s1);        }        else if(cmd.equals(".")){       //防止误输入            if(s1==""){s1="0.";jtf1.setText(s1);}            else{s1+='.';jtf1.setText(s1);}        }           else if(cmd.equals("+")){            s1+='+';jtf1.setText(s1);            fh[n++]=1;        }        else if(cmd.equals("-")){            s1+='-';jtf1.setText(s1);            fh[n++]=2;        }        else if(cmd.equals("*")){            s1+='*';jtf1.setText(s1);            fh[n++]=3;        }        else if(cmd.equals("/")){               s1+='/';jtf1.setText(s1);            fh[n++]=4;        }        else if(cmd.equals("=")){            sr=s1.split("\\+|\\*|\\-|\\/");            //sr=s1.split("[*/+-]");//注意-在[]中代表范围,应放在两端,避免把小数点也隔离                   sum=Double.parseDouble(sr[0]);            for(int i=1;i<sr.length;i++){                if(fh[i-1]==1)                    sum+=Double.parseDouble(sr[i]);                else if(fh[i-1]==2)                    sum-=Double.parseDouble(sr[i]);                else if(fh[i-1]==3)                    sum*=Double.parseDouble(sr[i]);                else if(fh[i-1]==4){                    if(sr[i].equals("0")){jtf1.setText("除数不能为0");n=0;s1="";return;} //                    sum/=Double.parseDouble(sr[i]);                    }            }            jtf1.setText(Double.toString(sum));            n=0;            s1="";          }           }    public static void main(String[] args){        SwingUtilities.invokeLater(new Runnable(){            public void run(){                new jisuanqi();            }        });    }}
0 0
原创粉丝点击