计算器

 用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 stub
		Calculator c=new Calculator();
		c.setLocationRelativeTo(null);
		c.setSize(400,325);
		c.setDefaultCloseOperation(c.EXIT_ON_CLOSE);
		c.setVisible(true);
	}
}
class ListenerNum implements ActionListener{

	//@Override
	private 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 stub
		String s= awk.getText().trim();
		int num=i*3+j+1;
		if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/"))
			s=" "+num;
		else
			s+=num;
		awk.setText(s);
	}	
}

你可能感兴趣的:(计算器)