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

📄 jsuanq.java

📁 计算器的JAVA源码是针对学习软件工程专业的学生在进行《软件工程导论》课时的必备参考工具
💻 JAVA
字号:
/**
 * @(#)JSuanQ.java
 *
 *
 * @author 
 * @version 1.00 2007/8/10
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JSuanQ extends JFrame {
    private  double toleft;
    private  boolean isPer=false;//是否输入"."
    private  boolean IsClick=false;//判断是否按下"="号.
    private StringBuffer left=new StringBuffer(); //记录数据
	private JButton[] button=new JButton[16];
	private JButton Ce,Back;
	private JLabel pass;
	private int opp=5;//0:+,1:-,2:*,3:/  5:不运算状态
    private JTextField show;
    public JSuanQ(String title) {
    super(title);
    show=new JTextField();
    show.setHorizontalAlignment(JTextField.RIGHT);
	JPanel panel =new JPanel();
	JPanel ptop=new JPanel();
	panel.setLayout(new GridLayout(4,4));
	ptop.setLayout(new GridLayout(1,7));
    show.setText("0");
	show.setSize(250,50);
	add(show,BorderLayout.NORTH);
	add(panel,BorderLayout.CENTER);
	Back=new JButton("Back");
	Back.setForeground(Color.red);
    Ce=new JButton("CE");
    Ce.setForeground(Color.red);
    pass=new JLabel();
    pass.setText("**欢迎使用**");
    pass.setBackground(Color.red);
    ptop.add(pass);
	ptop.add(Back);
	ptop.add(Ce);
	add(ptop,BorderLayout.SOUTH);
	String[] num ={"7","8","9","+","4","5","6","-","1","2","3","*","0",".","=","/"};
	for(int i=0;i<num.length;i++){
    	button[i]=new JButton(num[i]);
    	button[i].setForeground(Color.blue);
       panel.add(button[i]);
    }
   for(int j=0;j<num.length;j++){
        if(j%4!=3&&j!=14) 
          	button[j].addActionListener(new numListener(num[j]));
   		if(j==3||j==7||j==11||j==15){
   		 button[j].addActionListener(new operator());
   		 button[j].setForeground(Color.RED);}
   		if(j==14)
   		    button[j].addActionListener(new value());
     }
   Ce.addActionListener(new CeListener());
   Back.addActionListener(new BackListener());
   setSize(300,200);
   setVisible(true);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   show.setEditable(false);
   setResizable(false);
   } 
   	//数字键监听器
	class numListener implements  ActionListener{
		private String str;
		public numListener(String s){str=s;}
		public void actionPerformed(ActionEvent evt){
	     if(str.equals(".")&&isPer==false){isPer=true;left.append(str);}
	  	 else
	  		if(!str.equals(".")) left.append(str);
	  	show.setText(left.toString());
	  }
	}
	//运算符监听器
	 class operator implements  ActionListener{
	 	public void actionPerformed(ActionEvent evt){
    		if(IsClick==true) {
    			left.delete(0,left.length());
                left.append(new Double(toleft).toString());//如果连续按等号记录操作数的值
    		}
    	if(opp!=5)operation(opp);
    	else
    	    toleft=left.toString().equals("")?0.0:Double.parseDouble(left.toString());
        left.delete(0,left.length());
	  	show.setText(left.toString());
	  	if(evt.getSource()==button[3])opp=0;
	  	if(evt.getSource()==button[7])opp=1;
	  	if(evt.getSource()==button[11])opp=2;
	  	if(evt.getSource()==button[15])opp=3;
	  	isPer=false;
	  	IsClick=false;
	  	} 
	 }
	 //"="号的监听器.
	class value implements ActionListener{
		private int X;//记录连续按"="号时的运算符
    	public void actionPerformed(ActionEvent evt){
    		operation(opp);
    		if(IsClick==false){X=opp;IsClick=true;
    		}
    		else operation(X);
    	    show.setText(new Double(toleft).toString());
    		opp=5;
    		}
	}
	//归零
	 class CeListener implements ActionListener{
	 	public void actionPerformed(ActionEvent evt){
	 		left.delete(0,left.length());
	 		toleft=0;
	 		show.setText("0");
	 		IsClick=false;
            isPer=false;
	 	    opp=5;
	 	}
	 }
	 class BackListener implements ActionListener{
	 	public void actionPerformed(ActionEvent evt){
	 		if(left.length()!=0)
	 		left.deleteCharAt(left.length()-1);
	 		show.setText(left.toString());
	 		}
	 }
	 public void operation(int OP){
	 	switch(OP){
	 	case 0:toleft=toleft+Double.parseDouble(left.toString());break;
	 	case 1:toleft=toleft-Double.parseDouble(left.toString());break;
	 	case 2:toleft=toleft*Double.parseDouble(left.toString());break;
	 	case 3:toleft=toleft/Double.parseDouble(left.toString());break;
	  }
	 }
	 public static void main (String[] args) {
    	new JSuanQ("计算器 ");
    	}
 }

⌨️ 快捷键说明

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