Java实现简易计算器-界面设计源代码以及作用注释

图像界面代码完成后如下图Java实现简易计算器-界面设计源代码以及作用注释_第1张图片

以下为源代码

import java.awt.*;//改为星号是代表 导入所有包方便以后不用导包
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;//为了以后其他控件不用导包用*

public class keshijisuanqi extends JFrame implements ActionListener {//实现接口implements ActionListener
	double num1, num2, num3;// 定义有两个操作数一个结果
	boolean end, add, mul, sub, div;// 定义end表示输入的操作数是否已经结束后面是加法乘法减法除法
	// 窗体北部
	JPanel p1 = new JPanel();// JPanel是一个空间在这个上面放文本框此过程利用的边界布局管理器
	JTextField t = new JTextField("0");// 文本框起名字为t文本框初始值0
	// 为了使文本框显现出来把文本框放到p1上再把p1放到窗体上
	// 窗体中部
	JPanel p2 = new JPanel();
	JButton b[] = new JButton[16];// 采用数组方式来创建按钮

	public void init() {// 专门用来初始化按钮的方法
		b[0] = new JButton("1");// 第一个按钮的下标是0放入1
		b[1] = new JButton("2");
		b[2] = new JButton("3");
		b[3] = new JButton("+");
		b[4] = new JButton("4");
		b[5] = new JButton("5");
		b[6] = new JButton("6");
		b[7] = new JButton("-");
		b[8] = new JButton("7");
		b[9] = new JButton("8");
		b[10] = new JButton("9");
		b[11] = new JButton("*");
		b[12] = new JButton(".");
		b[13] = new JButton("0");
		b[14] = new JButton("=");
		b[15] = new JButton("/");
	}

	public keshijisuanqi() {// 这个类的构造方法
		this.setTitle("计算器");// 为窗体设计标题、
		this.setVisible(true);// 设置窗体可见
		this.setResizable(false);// 设置窗体的大小不可以被调动
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 当关闭窗体的时候应用进程也被关闭这样就不占内存了
		this.setBounds(200, 200, 320, 320);// 窗体在屏幕中出现的位置以及大小x轴y轴宽度高度
		this.add(p1, "North");// 把p1放到窗体上
		p1.add(t);// 把t放到p1上
		t.setColumns(28);// 设置文本框宽度设置为28文本居左排序
		t.setHorizontalAlignment(JTextField.RIGHT);// 设置文本框文本出现位置设置放在右侧
		t.setEditable(false);// 设置文本框不可编辑

		GridLayout gl = new GridLayout(4, 4);// 网格布局管理器设置为4x4
		gl.setHgap(10);// 设置水平距离
		gl.setVgap(10);// 设置垂直距离
		p2.setLayout(gl);// 把布局管理器应用到p2

		this.add(p2);// 把p2加到窗体上
		init();

		// 按钮加到P2上
		for (int i = 0; i < 16; i++) {
			p2.add(b[i]);
		}

		// 窗体西部
		JLabel jb1 = new JLabel();// 标签
		jb1.setPreferredSize(new Dimension(10, 0));// 调用方法里面实例化一个面积dimension能自适应窗口大小
		this.add(jb1, "West");
		// 窗体东部
		JLabel jb2 = new JLabel();// 标签
		jb2.setPreferredSize(new Dimension(10, 0));
		this.add(jb2, "East");
		
		for(int i=0;i<16;i++) {//为下面按钮增加监听者
			b[i].addActionListener(this);//调用方法增加监听者监听当前窗体
		}
	}

	public void num(int i) {// 数据部分处理数定义形参来接收数据
		String s=String.valueOf(i);//因为文本框只能存放文本信息将整形转换为文本
		if(end) {//判断操作数是否结束
			t.setText("0");//结束将文本框中还原为原来的数据
			end=false;
		}
		if(t.getText().equals("0")) {//判断文本框内容为零get获取equ对比
			t.setText(s);//如果文本框内容为零则覆盖文本框内容
		}
		else {//如果文本框内容不为空
			String str =t.getText()+s;//用t获取以前的文本把新输入的内容追加到原来文本后面
			t.setText(str);//把内容一起添加到文本框中
		}
	}

	public void sign(int i) {// 四则运算处理运算符也需要一个形参来接收数据用加减乘除不好操作所以用1代表加2减3乘4除
		if(i==1) {//加法
			add=true;//add启用其他为false
			mul=false;
			sub=false;
			div=false;
		}
		if(i==2) {//减法
			add=false;
			mul=false;
			sub=true;
			div=false;
		}
		if(i==3) {//乘法
			add=false;
			mul=true;
			sub=false;
			div=false;
		}
		if(i==4) {//除法
			add=false;
			mul=false;
			sub=false;
			div=true;
		}
		num1=Double.parseDouble(t.getText());//将数据存到num1中不然就会被替换掉
		end=true;//代表第一个结束可以开始下一个
	}

	public void point() {// 处理小数点
		String s;//定义变量s
		if(t.getText().indexOf('.')<0) {//判断文本信息中没有小数点加用ind方法读取小数点如果小于零则显示没有
		s=t.getText()+".";//使用t获取文本在后面追加小数点
		t.setText(s);//将信息存放到文本框中
		}
	}

	public void eql() {// 处理等于符号
		num2=Double.parseDouble(t.getText());//当点击等号时说明第二个操作数已经输入完毕将数据存到num2
		if(add) {//如果传过来加法则利用加法运算
			num3=num1+num2;
		}
		if(mul) {
			num3=num1*num2;
		}
		if(sub) {
			num3=num1-num2;
		}
		if(div) {
			num3=num1/num2;
		};
		String s=String.valueOf(num3);//运算结束将结果存下来
		t.setText(s);//赋值到文本框中
		end=true;//标志操作完毕可以进入下一操作符
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		keshijisuanqi c = new keshijisuanqi();// 调用构造方法不调用方法不会出现界面
		

	}

	@Override
	public void actionPerformed(ActionEvent e) {//参数为响应事件参数这个方法是通过导包自己出现的
		// TODO Auto-generated method stub
		if(e.getSource()==b[0])//当点击按钮会产生一个事件源如果点击b[0]将1传入
			num(1);//将1提交到num方法中
		if(e.getSource()==b[1])
			num(2);
		if(e.getSource()==b[2])
			num(3);
		if(e.getSource()==b[3])
			sign(1);
		if(e.getSource()==b[4])
			num(4);
		if(e.getSource()==b[5])
			num(5);
		if(e.getSource()==b[6])
			num(6);
		if(e.getSource()==b[7])
			sign(2);
		if(e.getSource()==b[8])
			num(7);
		if(e.getSource()==b[9])
			num(8);
		if(e.getSource()==b[10])
			num(9);
		if(e.getSource()==b[11])
			sign(3);
		if(e.getSource()==b[12])
			point();
		if(e.getSource()==b[13])
			num(0);
		if(e.getSource()==b[14])
			eql();
		if(e.getSource()==b[15])
			sign(4);
		
	}

}

代码来源于Java微项目视屏教学下面是相关视屏链接
http://i.youku.com/i/UNjM3NTQ0NzQ4MA==?spm=a2hzp.8244740.0.0

你可能感兴趣的:(java)