Java用awt编写计算器(只有加减乘除)

Java用awt编写计算器(只有加减乘除)

结果演示:
在这里插入图片描述

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class CalFrame extends Frame {
	public TextField txt;//文字框文本
	public boolean flag=false;//判断是否切换文字框内容
	public int numflag=0;//判断是否为第一次输入和计算
	public String operator="";//保存计算符号
	public double num1;//保存前一次运算结果或第一次输入的数据
	public double num2;//保存刚输入的数据
	
	public CalFrame(String title) {
		super(title);
		init();//引入名字并启动计算器
	}
	private void init() {
		this.setBounds(100, 100, 160, 220);//计算机位置和大小
		txt=new TextField();
		this.add(txt, BorderLayout.NORTH);//利用麻将布局将文本框位置放于最上方
		Panel panel=new Panel();
		GridLayout gl=new GridLayout(4,4,1,1);//分割面板
		panel.setLayout(gl);
		this.add(panel);//设置frame布局为GridLayout
		Button[] btn= {new Button("7"),new Button("8"),new Button("9"),new Button("+"),new Button("4"),new Button("5"),new Button("6"),new Button("-"),new Button("1"),new Button("2"),new Button("3"),new Button("*"),new Button("0"),new Button("."),new Button("="),new Button("/")};
		for(int i=0;i<btn.length;i++) {
			panel.add(btn[i]);//将个按钮加入面板
		}
		for(int i=0;i<btn.length;i++) {//判断是数字还是符号并运用相应方法
			if(i!=3&&i!=7&&i!=11&&i!=15&&i!=14) {
				btn[i].addMouseListener(new NumberButtonListener(this));
			}else {
				btn[i].addMouseListener(new OperatorButtonListener(this));
			}
		}
		this.setVisible(true);
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				CalFrame.this.dispose();
			}	//关闭计算器
		});
	}
}

import java.awt.Button;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class NumberButtonListener extends MouseAdapter {

	private CalFrame frame;
	
	public NumberButtonListener(CalFrame frame) {
		this.frame = frame;
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		Button btn=(Button)e.getSource();
		String num=btn.getLabel();
		if(frame.numflag==0) {//判断是否为第一次输入
			frame.numflag=1;
		}
		if(!frame.flag) {
			frame.txt.setText(num);
			frame.flag=true;//便于文字框内容的切换
		}
		else {
			frame.txt.setText(frame.txt.getText()+num);//便于二位数等数的输入
		}
	}
	
}
import java.awt.Button;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class OperatorButtonListener extends MouseAdapter {
	private CalFrame frame;
	
	public OperatorButtonListener(CalFrame frame) {
		this.frame = frame;
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		frame.flag=false;//使下一次输入数字时文字框内容切换
		if(frame.numflag==1) {//判断是否为第一次计算
			frame.numflag=2;
			String num1Str=frame.txt.getText();
			frame.num1=Double.parseDouble(num1Str);
			Button btn=(Button)e.getSource();
			frame.operator=btn.getLabel();
		}else if(frame.numflag==2) {
			String num2Str=frame.txt.getText();
			frame.num2=Double.parseDouble(num2Str);
			if("+".equals(frame.operator)) {
				frame.num1=frame.num1+frame.num2;
			}else if("-".equals(frame.operator)) {
				frame.num1=frame.num1-frame.num2;
			}else if("*".equals(frame.operator)) {
				frame.num1=frame.num1*frame.num2;
			}else if("/".equals(frame.operator)) {
				frame.num1=frame.num1/frame.num2;
			}//判断符号并进行对应的运算
			frame.num2=0;
			Button btn=(Button)e.getSource();
			frame.operator=btn.getLabel();
			if("=".equals(frame.operator)) {//判断最后的符号是否为“=”
				frame.txt.setText(frame.num1+"");//输出结果
				frame.numflag=0;
				frame.flag=false;//数据清零
			}
		}
	}
	
}
public class Counter {

	public static void main(String[] args) {
		new CalFrame("计算器");//启动计算器
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wslxc00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值