jisuanqi.java

来自「简单使用coreJAVA实现的简单的计算器」· Java 代码 · 共 119 行

JAVA
119
字号
package 接口使用;
//计算器面向对象的方法
/**
 * 按运算符;把文本框中的数字保存,文本框清空,把运算符保存下来
 * 按=号先把文本框中数子保存把保存的运算符和数字来运行算
 */
import javax.swing.*;

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

public class JiSuanQi implements ActionListener {
	private JFrame frame;
	private JTextField field;
	private JButton clear;
	private JButton[] allButtons;
	//全局变量
	private double number1=0.0,number2=0.0;
	private char operator;//代表运算符
	
	public JiSuanQi (){
		frame=new JFrame("计算器v1.1");
		field=new JTextField(20);
		clear=new JButton("c");
		allButtons=new JButton[16];
		String str="123+456-789*0.=/";
		for(int i=0;i<allButtons.length;i++){
			allButtons[i]=new JButton(str.charAt(i)+"");
		}
		init();
		addEvnentHandler();
		//setColor();
	}
	
	
	private void setColor(){
		for(int i=0;i<allButtons.length;i++){
			allButtons[i].setBackground(i%2==0?Color.BLUE:Color.RED);
		}
	}
	
	private void init(){
		JPanel north=new JPanel();
		JPanel center=new JPanel();
		north.setLayout(new FlowLayout());
		center.setLayout(new GridLayout(4,4));
		
		north.add(field);
		north.add(clear);
		
		for(int i=0;i<allButtons.length;i++){
			center.add(allButtons[i]);
		}
		frame.setLayout(new BorderLayout());
		frame.add(north,BorderLayout.NORTH);
		frame.add(center,BorderLayout.CENTER);
	}
	
	private void addEvnentHandler(){
		for(int i=0;i<allButtons.length;i++){
			allButtons[i].addActionListener(this);
		}
		clear.addActionListener(this);
	}
	public void showMe(){
		frame.pack();
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
	}
	public static void main(String[] args){		
		new JiSuanQi().showMe();
	}


	@Override
	public void actionPerformed(ActionEvent e) {
		 String str=e.getActionCommand().trim();//的到文本内容
		//判断str字符是不是数字字符
		 if("0123456789.".indexOf(str)!=-1){//调用String的indexOf方法

//			 String n1=""+number1+str;
//			number1=Double.parseDouble(n1);
			 field.setText(field.getText()+str);
			 return;
		 }
//		等价于下面的 
//		 if('0'<=str.charAt(0)&& str.charAt(0)<='9'){
//			
//		}
		 if("+-*/".indexOf(str)!=-1){
			 number1=Double.parseDouble(field.getText());//field.getText()文本框中拿到的值
			 field.setText("");//文本框清空
			 operator=str.charAt(0); 
			return; 
		 }
		 if(str.equals("=")){
			 number2=Double.parseDouble(field.getText());
			 double result=0.0;
			 switch(operator){
			 case'+':result=number1+number2;break;
			 case'-':result=number1-number2;break;
			 case'*':result=number1*number2;break;
			 case'/':result=number1/number2;break;
			 }
			 field.setText(result+"");
			 return;
		 }
		 if(str.equals("c")){
			 number1=0.0;
			 number2=0.0;
			 operator='\u0000';
			 field.setText("");
			 return;
		 }
	}
}

⌨️ 快捷键说明

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