计算器

来源:互联网 发布:怎么增加淘宝转率 编辑:程序博客网 时间:2024/04/29 23:54
 用java写的一个计算器(极度粗糙的)。 
import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Calculator extends JFrame{private double num1,num2,result;private char mysign;private JButton [][] bt;    private JButton [] sign;    private JTextField awk;    private JButton zero;public Calculator(){JPanel p1= new JPanel(new GridLayout(5,3));JPanel p2 =new JPanel(new GridLayout(4,1));setLayout(new BorderLayout());    awk =new JTextField(10);    awk.setPreferredSize(new Dimension(300,50));     //设置文本框大小bt=new JButton[4][3];                            //用来表示数字sign =new JButton[4];for(int i=0;i<3;i++)for(int j=0;j<3;j++){int num=i*3+j+1;bt[i][j]=new JButton(""+num);p1.add(bt[i][j]);}bt[3][0]=new JButton("0");bt[3][1]=new JButton(".");bt[3][2]=new JButton("=");zero=new JButton("C");for(int i=0;i<3;i++)p1.add(bt[3][i]);p1.add(zero);sign[0]=new JButton("+");sign[1]=new JButton("-");sign[2]=new JButton("*");sign[3]=new JButton("/");for(int i=0;i<4;i++)p2.add(sign[i]);add(awk,BorderLayout.NORTH);add(p1,BorderLayout.CENTER);add(p2,BorderLayout.EAST);//ftp.setText("1");//实现监听器功能(数字1-9)ActionListener[] listen= new ListenerNum[10];for(int i=0;i<3;i++){for(int j=0;j<3;j++){listen[i*3+j]=new ListenerNum(i,j,awk);bt[i][j].addActionListener(listen[i*3+j]);}}listen[9]=new ListenerNum(0,-1,awk);bt[3][0].addActionListener(listen[9]);//小数点监听器bt[3][1].addActionListener(new ActionListener(){           public void actionPerformed(ActionEvent e){awk.setText(awk.getText().trim()+".");}});//等号监听器bt[3][2].addActionListener(new ActionListener(){           public void actionPerformed(ActionEvent e){num2 = (Double.parseDouble(awk.getText().trim()));calculate(mysign);awk.setText(" "+result);}});//四则符号监听器sign[0].addActionListener(new ActionListener(){           //内部类不能使用外部的局部变量public void actionPerformed(ActionEvent e){num1 = (Double.parseDouble(awk.getText().trim()));awk.setText("+");mysign='+';}});sign[1].addActionListener(new ActionListener(){           public void actionPerformed(ActionEvent e){num1 = (Double.parseDouble(awk.getText().trim()));awk.setText("-");mysign='-';}});sign[2].addActionListener(new ActionListener(){           public void actionPerformed(ActionEvent e){num1 = (Double.parseDouble(awk.getText().trim()));awk.setText("*");mysign='*';}});sign[3].addActionListener(new ActionListener(){           public void actionPerformed(ActionEvent e){num1 = (Double.parseDouble(awk.getText().trim()));awk.setText("/");mysign='/';}});//归零监听器zero.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){awk.setText("");}});}public void calculate(char s){switch(s){case '+':result=num1+num2;break ;case '-':result=num1-num2;break ;case '*':result=num1*num2;break ;case '/':result=num1/num2;break ;}}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubCalculator c=new Calculator();c.setLocationRelativeTo(null);c.setSize(400,325);c.setDefaultCloseOperation(c.EXIT_ON_CLOSE);c.setVisible(true);}}class ListenerNum implements ActionListener{//@Overrideprivate int i,j;private JTextField awk;ListenerNum(){i=0;j=0;awk=null;}ListenerNum(int i,int j,JTextField awk){this.i=i;this.j=j;this.awk=awk;}public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString s= awk.getText().trim();int num=i*3+j+1;if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/"))s=" "+num;elses+=num;awk.setText(s);}}

原创粉丝点击