Java实现计算器

Java实现计算器

package GUI._8_2_;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
//计算机窗口 可计算
//注释带有”+++“的  是比Calculator多的代码
public class Calculator2 extends JFrame{//继承JFrame面板 直接初始化了窗口 用this调用内部方法  +++
	String number ="";//文本框里的值 +++
	String number1 ;//第一个操作数 +++
	String number2 ;//第二个操作数 +++
	double result;//计算结果 +++
	String operator;//操作符 +++
	
	JTextField jtf;// 文本域输入框
	JButton[] btn;// 存放16个组件的数组
	JButton clear;// '清空'按钮

	public Calculator2() {// 初始化窗口组件
		jtf = new JTextField();// 初始化文本框
		clear = new JButton("清空");// 初始化清空按钮
		clear.addActionListener(new ActionListener() {//匿名监听器 +++
			public void actionPerformed(ActionEvent e) {
				number="";
				jtf.setText(number);
			}
		});

		// 设置窗体图标
		Image im = new ImageIcon("heart.gif").getImage();
		this.setIconImage(im);

		btn = new JButton[16];
		String str = "789+456-123*0.=/";
		for (int i = 0; i < btn.length; i++) {
			btn[i] = new JButton(str.charAt(i) + "");
			btn[i].addActionListener(new BtnCkick());//给按钮添加监听器+++
		}

		init();
		setFont();
	}

	private void setFont() {//设置字体大小
		Font f= new Font("微软雅黑",1,20);
		for (int i = 0; i < btn.length; i++) {
			 btn[i].setFont(f);
		}
		clear.setFont(f);//清空 字体
		
		Font font= new Font("微软雅黑",2,10);//文本域字体
		jtf.setFont(font);
	}

	public void init() {// 添加组件,设置窗体布局
		this.setLayout(new BorderLayout());// 窗体调为边界布局
		JPanel jp1 = new JPanel();
		JPanel jp2 = new JPanel();
		jp1.setLayout(new FlowLayout());// 面板1 流体布局
		
		jtf.setPreferredSize(new Dimension(240,36));//设置文本域的预设大小
		jp1.add(jtf);
		jp1.add(clear);

		jp2.setLayout(new GridLayout(4, 4));// 面板2 4*4网格布局
		for (int i = 0; i < btn.length; i++) {
			jp2.add(btn[i]);
		}
		
		this.add(jp1, BorderLayout.NORTH);// 面板1 的 流体布局添加到面板的北边
		this.add(jp2, BorderLayout.CENTER);// 面板2 的 网格布局添加到面板的中间
		showMe();
	}

	public void showMe() {// 显示窗体
		this.setTitle("计算机V2");//设置窗口名
		this.setSize(400, 350);// 设置窗体大小
		this.setLocation(500, 200);// 设置出现位置
		this.setVisible(true);// 设置窗体可见
		this.setResizable(false);// 设置窗口大小不可变
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置默认的关闭操作
	}
	//将监听器定义成内部类
	class BtnCkick implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			 String text = ((JButton)e.getSource()).getText();//获取按钮的文本信息
			 
			 if(text.equals("=")){
				 number2=jtf.getText();
				 if(operator.equals("+")){
					 result=Double.parseDouble(number1)+Double.parseDouble(number2);
					 jtf.setText(result+"");
				 }else if(operator.equals("-")){
					 result=Double.parseDouble(number1)-Double.parseDouble(number2);
					 jtf.setText(result+"");
				 }else if(operator.equals("*")){
					 result=Double.parseDouble(number1)*Double.parseDouble(number2);
					 jtf.setText(result+"");
				 }else if(operator.equals("/")){
					 result=Double.parseDouble(number1)/Double.parseDouble(number2);
					 jtf.setText(result+"");
				 }
				 
			 }else if(text.equals("+")){
				 number1=jtf.getText();
				 operator="+";
				 number="";
				 
			 }else if(text.equals("-")){
				 number1=jtf.getText();
				 operator="-";
				 number="";
			 }else if(text.equals("*")){
				 number1=jtf.getText();
				 operator="*";
				 number="";
			 }else if(text.equals("/")){
				 number1=jtf.getText();
				 operator="/";
				 number="";
			 }else{
				 number=number + text;
				 jtf.setText(number);
			 }
			 
			
		}
		
	}

	public static void main(String[] args) {
		new Calculator2();//main方法
	}
}


效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值