首页 > 代码库 > 简单计算器

简单计算器

     实现整数加减法的简单计算器

  

  

package jisuan;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class jisuan{
	private JPanel panel0;
	private JPanel panel2;
	private JLabel text1, text2;
	private int sum, tmp;
	private int flag;
	String s1, s2;
	JFrame frame;
	public jisuan(){
		s1 = s2 = "";
		sum = tmp = flag = 0;
		frame = new JFrame("科学计算器");
		frame.setLayout(new GridLayout(2,1,3,3));
        Container tainer = frame.getContentPane();
		
		panel0 = new JPanel(new GridLayout(2,1,3,3));
		text1 = new JLabel("");
		text1.setFont(new Font("隶书",1,20));
		text1.setHorizontalAlignment(SwingConstants.RIGHT);
		text1.setBorder(BorderFactory.createLineBorder(Color.black, 2));
		
		text2 = new JLabel("");
		text2.setFont(new Font("隶书",1,20));
		text2.setHorizontalAlignment(SwingConstants.RIGHT);
		text2.setBorder(BorderFactory.createLineBorder(Color.black, 2));
		panel0.add(text1);
		panel0.add(text2);
		frame.add(panel0);
		
		JButton b[]=new JButton[16];
		panel2 = new JPanel(new GridLayout(4,4));
		String str[]={"1", "2", "3", "+", "4", "5", "6", "-", "7", "8", "9", "*", "0", "/", "=", "C"};
		for (int i=0; i<16; i++)
		{
			b[i] = new JButton(str[i]);
			if (i==3 || i==7 || i==11 || i==13 ||i==14||i==15)
			   b[i].setForeground(Color.red);
			panel2.add(b[i]);
			b[i].addActionListener(new ButtonListen());//为每一个按钮添加监听
		}
		panel2.setSize(300, 300);
		tainer.add(panel2);
		
		frame.setResizable(false);//设置窗口不可以调节大小
		frame.setSize(300,300);
		frame.setVisible(true);
	}
	public static void main(String[] args){
		 new jisuan();
	}
	
	public class ButtonListen implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			  switch(e.getActionCommand()){
			  case "1": s2 += "1"; 
			            tmp = tmp*10 + 1;
			            text2.setText(s2);
			            break;
			  case "2": s2 += "2";
			            tmp = tmp*10 + 2;
	                    text2.setText(s2);
	                    break;
			  case "3": s2 += "3";
			           tmp = tmp*10 + 3;
	                   text2.setText(s2);
	                   break;
			  case "4": s2 += "4";
			            tmp = tmp*10 + 4;
	                    text2.setText(s2);
	                   break;
			  case "5": s2 += "5";
			           tmp = tmp*10 + 5;
	                   text2.setText(s2);
	                    break;
			  case "6": s2 += "6";
			            tmp = tmp*10 + 6;
	                    text2.setText(s2);
	                    break;
			  case "7": s2 += "7";
			            tmp = tmp*10 + 7;
	                    text2.setText(s2);
	                    break;
			  case "8": s2 += "8";
			            tmp = tmp*10 + 8;
	                    text2.setText(s2);
	                   break;
			  case "9": s2 += "9";
			           tmp = tmp*10 + 9;
	                   text2.setText(s2);
	                   break;
			  case "0": s2 += "0";
			           tmp = tmp*10;
	                   text2.setText(s2);
	                   break;
			  case "+": s1 =s1 + s2 + "+";	
			    slove();
			    geshi();
	            flag = 1;
	           break;
			  case "-": s1 += s2 + "-"; 
			      slove();  
			      geshi();
                  flag = 2;
                  break;
			  case "*": s1 += s2 + "*";
			  slove();  
			  geshi();
	            flag = 3;
	           break;
			  case "/": s1 += s2 + "/"; 
			  slove(); 
			  geshi();
                flag = 4;
                break;
			  case "C": s1 = s2 = "";	
			    sum = tmp = 0;
	            text1.setText(s1);
	            text2.setText(s2);
	           break;
			  case "=":  
			  slove();
			     s1 += s2;
			     s2 = sum+"";
			     text1.setText(s1);
                text2.setText(s2);
                s1 = s2 = "";
                sum = tmp = 0;
                flag = 0;
                break;
			 }
			
		}

	}
	public void slove(){
		switch (flag){
		case 0 : sum = tmp;break;
		case 1 : sum += tmp;break;
		case 2 : sum -= tmp;break;
		case 3 : sum *= tmp;break;
		case 4 : sum /= tmp;break;
		}
	}
	public void geshi(){
		tmp = 0;
		text1.setText(s1);
		if (flag!=0){
			s2 = sum + "";
			 text2.setText(s2);
		}
		s2 = "";
	}
}