JAVA的简单计算器设计

一个很简单的例子


希望各位大神指导指导。


package calculator;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
/**
 * @author:fulunyong
 * @email:fulunyong@qq.com
 * @datetime:2015年8月19日下午4:27:36
 * @version 1.0
 * @serial 简单的JAVA计算器
 */
public class Calculator extends JFrame{

	private JTextArea show;

	private String temp="";//临时字符串
	private String a="";//参数a
	private String b="";//参数b
	private Double reset=0.0;//结果
	private Character flag=null;//运算符

	private static final long serialVersionUID = -1340732273401597053L;


	public static void main(String[] args){
		new Calculator();
	}

	public Calculator(){

		setSize(700, 800);

		setVisible(true);
		setTitle("计算器");
		setResizable(false);//禁用窗口大小

		setLocationRelativeTo(null);//居中出现

		setDefaultCloseOperation(EXIT_ON_CLOSE);//点击关闭窗口时推出

		show=new JTextArea();//初始化文本框用于显示
		show.setEditable(false);

		//添加文本框到默认布局管理器的北方
		this.add(show,BorderLayout.NORTH);


		JButton num0=new JButton("0");
		JButton num1=new JButton("1");
		JButton num2=new JButton("2");
		JButton num3=new JButton("3");
		JButton num4=new JButton("4");
		JButton num5=new JButton("5");
		JButton num6=new JButton("6");
		JButton num7=new JButton("7");
		JButton num8=new JButton("8");
		JButton num9=new JButton("9");

		JButton addition=new JButton("+");
		JButton subtraction=new JButton("-");
		JButton multiplication=new JButton("*");
		JButton division=new JButton("/");

		JButton point=new JButton(".");
		JButton equal=new JButton("=");

		class OnClickLister implements ActionListener{
			@Override
			public void actionPerformed(ActionEvent e){
				char ch=e.getActionCommand().charAt(0);
				if('0'<=ch&&ch<='9'){
					temp+=ch;
					if(null!=flag){
						show.setText(a+flag+temp);
					}else {
						show.setText(temp);
					}
				}else if ('.'==ch){
					if ("".equals(temp)) {
						temp="0.";
					} else {
						temp+=ch;
					}
					if(null!=flag){
						show.setText(a+flag+temp);
					}else {
						show.setText(temp);
					}
				}else if ('+'==ch){
					a=temp;
					temp="";
					flag='+';
					show.setText(a+"+");
				}else if ('-'==ch){
					a=temp;
					temp="";
					flag='-';
					show.setText(a+"-");
				}else if ('*'==ch){
					a=temp;
					temp="";
					flag='*';
					show.setText(a+"*");
				}else if ('/'==ch){
					a=temp;
					temp="";
					flag='/';
					show.setText(a+"/");
				}else if ('='==ch){
					b=temp;
					temp="";
					if (null!=flag){
						switch (flag) {
						case '+':
							reset=Double.parseDouble(a)+Double.parseDouble(b);
							break;
						case '-':
							reset=Double.parseDouble(a)-Double.parseDouble(b);
							break;
						case '*':
							reset=Double.parseDouble(a)*Double.parseDouble(b);
							break;
						case '/':
							reset=Double.parseDouble(a)/Double.parseDouble(b);
							break;

						default:

							break;
						}

						show.setText(a+flag+b+"="+reset);
						flag=null;
						a="";
						b="";
					}
				}
			}
		}

		//添加按钮点击事件
		OnClickLister lister=new OnClickLister();

		num0.addActionListener(lister);
		num1.addActionListener(lister);
		num2.addActionListener(lister);
		num3.addActionListener(lister);
		num4.addActionListener(lister);
		num5.addActionListener(lister);
		num6.addActionListener(lister);
		num7.addActionListener(lister);
		num8.addActionListener(lister);
		num9.addActionListener(lister);

		addition.addActionListener(lister);
		subtraction.addActionListener(lister);
		multiplication.addActionListener(lister);
		division.addActionListener(lister);


		point.addActionListener(lister);
		equal.addActionListener(lister);


		//面板对象
		JPanel jPanelBn=new JPanel();
		//网格布局4x4
		GridLayout gridLayout=new GridLayout(4, 4);
		//设置面板对象的布局方式
		jPanelBn.setLayout(gridLayout);

		jPanelBn.add(num7);
		jPanelBn.add(num8);
		jPanelBn.add(num9);
		jPanelBn.add(addition);

		jPanelBn.add(num4);
		jPanelBn.add(num5);
		jPanelBn.add(num6);
		jPanelBn.add(subtraction);

		jPanelBn.add(num1);
		jPanelBn.add(num2);
		jPanelBn.add(num3);
		jPanelBn.add(multiplication);

		jPanelBn.add(num0);
		jPanelBn.add(point);
		jPanelBn.add(equal);
		jPanelBn.add(division);


		//添加面板到窗体

		this.add(jPanelBn,BorderLayout.CENTER);



	}


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值