⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handler.java

📁 计算器的原代码,简单使用
💻 JAVA
字号:
package controller;

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

import javax.swing.JButton;

import view.Compute;

public class Handler implements ActionListener{
	private Compute com;
	private String re;
	public Handler(Compute com,String re){
		this.com=com;
		this.re=re;
	}
	public void actionPerformed(ActionEvent e){
		//所有数字键监听实现
		if(!(re.equals("+")||re.equals("-")||re.equals("*")
				||re.equals("/")||re.equals(".")||re.equals("=")||re.equals("C"))){
			String text=com.getFd().getText();
			double num=Double.parseDouble(text);
			if(num==0&&!com.isPointFlag()||com.isOpFlag()){
				com.getFd().setText(re+".");
			}else if(text.endsWith(".")&&!com.isPointFlag()){
				com.getFd().setText(text.substring(0, text.length()-1)+re+".");
			}else if(text.endsWith(".")&&com.isPointFlag()){
				com.getFd().setText(com.getFd().getText()+re);
			}else{
				com.getFd().setText(text+re);
			}
		//	com.setPointFlag(false);
			com.setOpFlag(false);
		}
		//小数点键监听实现
		if(re.equals(".")){
			com.setPointFlag(true);//设置刚点过.运算符标记为true
			com.setOpFlag(false);//设置刚点过运算符标记为false
		}
		//清空键监听实现
		if(re.equals("C")){
			com.setPointFlag(false);
			com.getFd().setText("0.");
			com.setOpchar('!');
			com.setOpnum(0);
			com.setOpFlag(false);
		}
		
		
		//"="号监听器
		
			double temp=0;
			if(re.equals("=")){//判断是否+号并且不是刚点过+号
				if(com.getOpchar()!='!'){//判断是否第一次点击运算符
					switch(com.getOpchar()){//得到以前点击的运算符,来决定做什么运算
					case '+':
						 
						temp=com.getOpnum()+Double.parseDouble(com.getFd().getText());
						com.setText(temp);
						
						break;
					case '-':
						com.setText(
								com.getOpnum()-Double.parseDouble(com.getFd().getText()));
						break;
					case '*':
						com.setText(
								com.getOpnum()*Double.parseDouble(com.getFd().getText()));
						break;
					case '/':
						com.setText(
								com.getOpnum()/Double.parseDouble(com.getFd().getText()));
						break;
					}
			com.setOpnum(temp);//记录运算结果到第一个操作数
				}else{				
					com.setOpnum(Double.parseDouble(com.getFd().getText()));
				}
				
//				com.setOpchar(com.getOpchar());//设置点过+运算符
				com.setOpFlag(true);//设置刚点过运算符标记为true
				com.setPointFlag(false);//设置刚点过.运算符标记为false;
			}
		
		
		//运算符键监听实现
		
		if(re.equals("+")){//判断是否+号并且不是刚点过+号
			if(com.getOpchar()!='!'&&!com.isOpFlag()){//判断是否第一次点击运算符
				switch(com.getOpchar()){//得到以前点击的运算符,来决定做什么运算
				case '+':
					temp=com.getOpnum()+Double.parseDouble(com.getFd().getText());
					com.setText(temp);
					
					break;
				case '-':
					com.setText(
							com.getOpnum()-Double.parseDouble(com.getFd().getText()));
					break;
				case '*':
					com.setText(
							com.getOpnum()*Double.parseDouble(com.getFd().getText()));
					break;
				case '/':
					com.setText(
							com.getOpnum()/Double.parseDouble(com.getFd().getText()));
					break;
				}
				com.setOpnum(temp);//记录运算结果到第一个操作数
			}else{				
				com.setOpnum(Double.parseDouble(com.getFd().getText()));
			}
			
			com.setOpchar('+');//设置点过+运算符
			com.setOpFlag(true);//设置刚点过运算符标记为true
			com.setPointFlag(false);//设置刚点过.运算符标记为false;
		}
		
		if(re.equals("-")){//判断是否+号并且不是刚点过+号
			if(com.getOpchar()!='!'&&!com.isOpFlag()){//判断是否第一次点击运算符
				switch(com.getOpchar()){//得到以前点击的运算符,来决定做什么运算
				case '+':
					temp=com.getOpnum()+Double.parseDouble(com.getFd().getText());
					com.setText(temp);
					
					break;
				case '-':
					com.setText(
							com.getOpnum()-Double.parseDouble(com.getFd().getText()));
					break;
				case '*':
					com.setText(
							com.getOpnum()*Double.parseDouble(com.getFd().getText()));
					break;
				case '/':
					com.setText(
							com.getOpnum()/Double.parseDouble(com.getFd().getText()));
					break;
				}
				com.setOpnum(temp);//记录运算结果到第一个操作数
			}else{				
				com.setOpnum(Double.parseDouble(com.getFd().getText()));
			}
			
			com.setOpchar('-');//设置点过+运算符
			com.setOpFlag(true);//设置刚点过运算符标记为true
			com.setPointFlag(false);//设置刚点过.运算符标记为false;
		}
		
		
		
		if(re.equals("*")){//判断是否+号并且不是刚点过+号
			if(com.getOpchar()!='!'&&!com.isOpFlag()){//判断是否第一次点击运算符
				switch(com.getOpchar()){//得到以前点击的运算符,来决定做什么运算
				case '+':
					temp=com.getOpnum()+Double.parseDouble(com.getFd().getText());
					com.setText(temp);
					
					break;
				case '-':
					com.setText(
							com.getOpnum()-Double.parseDouble(com.getFd().getText()));
					break;
				case '*':
					com.setText(
							com.getOpnum()*Double.parseDouble(com.getFd().getText()));
					break;
				case '/':
					com.setText(
							com.getOpnum()/Double.parseDouble(com.getFd().getText()));
					break;
				}
				com.setOpnum(temp);//记录运算结果到第一个操作数
			}else{				
				com.setOpnum(Double.parseDouble(com.getFd().getText()));
			}
			
			com.setOpchar('*');//设置点过+运算符
			com.setOpFlag(true);//设置刚点过运算符标记为true
			com.setPointFlag(false);//设置刚点过.运算符标记为false;
		}
		
		
		if(re.equals("/")){//判断是否+号并且不是刚点过+号
			if(com.getOpchar()!='!'&&!com.isOpFlag()){//判断是否第一次点击运算符
				switch(com.getOpchar()){//得到以前点击的运算符,来决定做什么运算
				case '+':
					temp=com.getOpnum()+Double.parseDouble(com.getFd().getText());
					com.setText(temp);
					
					break;
				case '-':
					com.setText(
							com.getOpnum()-Double.parseDouble(com.getFd().getText()));
					break;
				case '*':
					com.setText(
							com.getOpnum()*Double.parseDouble(com.getFd().getText()));
					break;
				case '/':
					com.setText(
							com.getOpnum()/Double.parseDouble(com.getFd().getText()));
					break;
				}
				com.setOpnum(temp);//记录运算结果到第一个操作数
			}else{				
				com.setOpnum(Double.parseDouble(com.getFd().getText()));
			}
			
			com.setOpchar('/');//设置点过+运算符
			com.setOpFlag(true);//设置刚点过运算符标记为true
			com.setPointFlag(false);//设置刚点过.运算符标记为false;
		}
		
		
		
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -