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

📄 jisuanqi.java

📁 模拟一个计算器
💻 JAVA
字号:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Jisuanqi extends JFrame implements ActionListener{
	Result result = new Result(); //定义text的面板 
	Number number = new Number(); //定义按钮面板 
	//当点击按钮+、-、*、/时,com = true 
	boolean com = false; 
	//当i=0时说明是我们第一次输入,字符串text不会累加 
	int i = 0; 
	//存放text的内容 
	String text = ""; 
	//存放点击按钮+、-、*、/之前的数值 
	double defbutton = 0; 
	//+、-、*、/的代号分别为1,2,3,4 
	int symbol = 0; 
	//构造函数 
	Jisuanqi(){
		super("刘刚");//定义标题
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设定关闭窗体时退出程
		JPanel pane=new JPanel();//定义主面板
		pane.setLayout(new BorderLayout());
		setBounds(380,220,200,100); 
		pane.add(result, BorderLayout.NORTH); 
		pane.add(number, BorderLayout.CENTER); 
		 //在屏幕中显示的位置与大小 
		//设置监听
		number.zero.addActionListener(this);
		number.one.addActionListener(this);
		number.two.addActionListener(this);
		number.three.addActionListener(this);
		number.four.addActionListener(this);
		number.five.addActionListener(this);
		number.six.addActionListener(this);
		number.seven.addActionListener(this);
		number.eight.addActionListener(this);
		number.nine.addActionListener(this);
		number.czero.addActionListener(this);// 置0
		number.plus.addActionListener(this);// +
		number.sub.addActionListener(this);// -
		number.equal.addActionListener(this);// =
		number.mul.addActionListener(this);// *
		number.div.addActionListener(this);// 除
		number.two_to_Hex.addActionListener(this);//2进制转换10进制
		number.sqrt.addActionListener(this);//求开根号
		number.love_U.addActionListener(this);//just love U
		number.point.addActionListener(this);//小数点
		setContentPane(pane); 
		pack(); //初始化窗体大小为正好盛放所有按钮 			
	}
	//处理按钮触发的事件
	public void actionPerformed(ActionEvent e){
		if (e.getSource() == number.one){
			if (com || i == 0) {
				result.text.setText("1"); 
				com = false; 
				i = 1; 
			} 
			else { 
				text = result.text.getText(); 
				result.text.setText(text + "1"); 
			} 
		}
		else if (e.getSource() == number.two){
			if (com || i == 0) {
				result.text.setText("2"); 
				com = false; 
				i = 1; 
			} 
			else { 
				text = result.text.getText(); 
				result.text.setText(text + "2"); 
			} 
		}
		else if (e.getSource() == number.three){
			if (com || i == 0) {
				result.text.setText("3"); 
				com = false; 
				i = 1; 
			} 
			else { 
				text = result.text.getText(); 
				result.text.setText(text + "3"); 
			} 
		}
		else if (e.getSource() == number.four){
			if (com || i == 0) {
				result.text.setText("4"); 
				com = false; 
				i = 1; 
			} 
			else { 
				text = result.text.getText(); 
				result.text.setText(text + "4"); 
			} 
		}
		else if (e.getSource() == number.five){
			if (com || i == 0) {
				result.text.setText("5"); 
				com = false; 
				i = 1; 
			} 
			else { 
				text = result.text.getText(); 
				result.text.setText(text + "5"); 
			} 
		}
		else if (e.getSource() == number.six){
			if (com || i == 0) {
				result.text.setText("6"); 
				com = false; 
				i = 1; 
			} 
			else { 
				text = result.text.getText(); 
				result.text.setText(text + "6"); 
			} 
		}
		else if (e.getSource() == number.seven){
			if (com || i == 0) {
				result.text.setText("7"); 
				com = false; 
				i = 1; 
			} 
			else { 
				text = result.text.getText(); 
				result.text.setText(text + "7"); 
			} 
		}
		else if (e.getSource() == number.eight){
			if (com || i == 0) {
				result.text.setText("8"); 
				com = false; 
				i = 1; 
			} 
			else { 
				text = result.text.getText(); 
				result.text.setText(text + "8"); 
			} 
		}
		else if (e.getSource() == number.nine){
			if (com || i == 0) {
				result.text.setText("9"); 
				com = false; 
				i = 1; 
			} 
			else { 
				text = result.text.getText(); 
				result.text.setText(text + "9"); 
			} 
		}
		else if (e.getSource() == number.zero){//处理0要注意
			if (com || i == 0) {
				result.text.setText("0"); 
				com = false; 
				i = 1; 
			} 
			else { 
				text=result.text.getText( ); 
				if(Float.parseFloat(text) > 0 || Float.parseFloat(text) < 0){
					result.text.setText(text + "0");
				}
				else if(text.trim().indexOf(".") == -1){
					result.text.setText(text);
				}
				else{
					result.text.setText(text+"0");
				}
			} 
		}
		else if (e.getSource() == number.point){
			if (com || i == 0){
				result.text.setText("0.");
				com=false;
				i=1;
			}
			else{
				text=result.text.getText();
				if (text.trim().indexOf(".") == -1){
					result.text.setText(text+".");
					
				}
				else{
					result.text.setText(text);
				}
			}
		}
		
		else if (e.getSource() == number.czero){//置0键处理
			result.text.setText("0");
			i=0;
			com=true;
		}
		//下面为运算获得的第一个数
		else if (e.getSource() == number.plus) { //获得点击+之前的数值
			com = true; 
			i = 0; 
			defbutton = Double.parseDouble(result.text.getText()); 
			symbol = 1; 
		}  
		else if (e.getSource() == number.sub) { //获得点击-之前的数值
			com = true; 
			i = 0; 
			defbutton = Double.parseDouble(result.text.getText()); 
			symbol = 2; 
		}  
		else if (e.getSource() == number.mul) { //获得点击*之前的数值
			com = true; 
			i = 0; 
			defbutton = Double.parseDouble(result.text.getText()); 
			symbol = 3; 
		}  
		else if (e.getSource() == number.div) { //获得点击 / 之前的数值
			com = true; 
			i = 0; 
			defbutton = Double.parseDouble(result.text.getText()); 
			symbol = 4; 
		}
		//其他的进制转换基本原理都一样,所以就弄了一个2进制转换为16进制
		//要注意输入一定要是二进制的数
		else if (e.getSource() == number.two_to_Hex) { //进制转换
				com = true; 
				i = 0;
				String text1=result.text.getText( ); 
				for(int i=0;i<text1.length();i++){
					char c = text1.charAt(i);
					if(c =='1'||  c=='0'|| c=='.'){
						int ad0=Integer.parseInt(result.text.getText(),2);
						String ad2=Integer.toHexString(ad0);
						result.text.setText(ad2+" ");
					}
					else{
						result.text.setText("ERROR! 2进制转换16进制只能输入0或1 ! ");
						
					}
				}
		}  
		else if (e.getSource() == number.sqrt) { //获得点击 开根号 之前的数值
			com = true; 
			i = 0; 
			defbutton = Double.parseDouble(result.text.getText());
			double ad=Math.sqrt(defbutton);
			result.text.setText(ad+" ");
		} 
		else if (e.getSource() == number.love_U) { //
			com = true; 
			i = 0; 
			result.text.setText("JUST  FOR  LOVE ");
		} 
		else if (e.getSource() == number.equal){ 
		switch(symbol){//求值
			case 1:
			{
				double ad = 
				defbutton + Double.parseDouble(result.text.getText()); 
				result.text.setText(ad + " "); 
				i = 0; 
				text = ""; 
				break; 
			}
			case 2:
			{
				double ad = 
				defbutton - Double.parseDouble(result.text.getText()); 
				result.text.setText(ad + " "); 
				i = 0; 
				text = ""; 
				break; 
			}
			case 3:
			{
				double ad = 
				defbutton * Double.parseDouble(result.text.getText()); 
				result.text.setText(ad + " "); 
				i = 0; 
				text = ""; 
				break; 
			}
			case 4:
			{
				double ad = 
				defbutton / Double.parseDouble(result.text.getText()); 
				result.text.setText(ad + " "); 
				i = 0; 
				text = ""; 
				break; 
			}

			}
			}
	}	
	public static void main(String[] args) { 
	Jisuanqi loveyou = new Jisuanqi(); 
	loveyou.show(); 		
}
}
}	//计算器显示结果的窗体 
class Result extends JPanel { 
		//text先是输入和结果 
	JTextField text = new JTextField(20); 
	Result() { 			//讲输入的数字或得到的结果在text的右边显示 
		text.setHorizontalAlignment(SwingConstants.RIGHT); 
		text.enable(true); 		//文本框不能编辑 
		setLayout(new BorderLayout()); //设定布局管理器边框布局 
		add(text, BorderLayout.NORTH); //text放置在窗体的中间 
	} 
}
	
class Number extends JPanel {//计算器数字按钮定义面板  
	JButton zero = new JButton("0");  
	JButton one = new JButton("1");  
	JButton two = new JButton("2");  
	JButton three = new JButton("3");  
	JButton four = new JButton("4");   
	JButton five = new JButton("5");   
	JButton six = new JButton("6");  
	JButton seven = new JButton("7");  
	JButton eight = new JButton("8");  
	JButton nine = new JButton("9");  
	JButton plus = new JButton("+"); 
	JButton sub = new JButton("-"); 
	JButton mul = new JButton("*"); 
	JButton div = new JButton("/"); 
	JButton equal = new JButton("="); 
	JButton czero = new JButton("清零");  
	JButton point = new JButton(".");
	JButton love_U=new JButton("love_U");
	JButton sqrt=new JButton("sqrt");
	JButton two_to_Hex=new JButton("进制");//10进制转换16进制
	Number(){
		setLayout(new GridLayout(5, 4, 1, 1)); //定义布局管理器为网格布局 
		setBackground(Color.red); //设置背景颜色  
		add(one); //添加按钮 
		add(two); 
		add(three); 
		add(plus); 
		add(four);
		add(five); 
		add(six); 
		add(sub); 
		add(seven); 
		add(eight); 
		add(nine);
		add(mul);  
		add(zero); 
		add(div); 
		add(point); 
		add(czero); 
		add(love_U); 
		add(two_to_Hex); 
		add(sqrt); 
		add(equal); 
	}
}	//计算器显示结果的窗体 

	  

⌨️ 快捷键说明

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