import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
public class Calculator1 extends JFrame implements ActionListener{
	JPanel jp1,jp2,jp3;
	JTextField jtf;
	JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jbAdd,jbSub,jbMul,jbDiv,jbR,jbAC,jbAbout,jbCancer,jbSur,jbD;
	boolean add,sub,end,mul,div,sur;
	String str;
	Double num1,num2;
	
	public Calculator1(){
		jp1 = new JPanel();
		jtf= new JTextField("0",20);
		jtf.setHorizontalAlignment(JTextField.RIGHT);
		jtf.setForeground(Color.BLUE);
		jtf.setEditable(false);
		TitledBorder tb= new TitledBorder("输出");
		tb.setTitleColor(Color.RED);
		jp1.add(jtf);
		jp1.setBorder(tb);
		
		jp2 = new JPanel();
		jb0 = new JButton("0");     jb0.addActionListener(this);    
		jb1 = new JButton("1");     jb1.addActionListener(this);   
		jb2 = new JButton("2");     jb2.addActionListener(this);
		jb3 = new JButton("3");     jb3.addActionListener(this);   
		jb4 = new JButton("4");     jb4.addActionListener(this);
		jb5 = new JButton("5");     jb5.addActionListener(this);
		jb6 = new JButton("6");		jb6.addActionListener(this);
		jb7 = new JButton("7");		jb7.addActionListener(this);
		jb8 = new JButton("8");		jb8.addActionListener(this);
		jb9 = new JButton("9");		jb9.addActionListener(this);
		jbAdd = new JButton("+");	jbAdd.addActionListener(this);
		jbSub = new JButton("-");	jbSub.addActionListener(this);
		jbMul = new JButton("*");	jbMul.addActionListener(this);
		jbDiv = new JButton("/");	jbDiv.addActionListener(this);
		jbSur=new JButton("%");     jbSur.addActionListener(this);
		jbD=new JButton(".");     jbD.addActionListener(this);
		jbAC = new JButton("AC");	jbAC.addActionListener(this);
		jbR= new JButton("=");		jbR.addActionListener(this);
		jp2.add(jb0);     
		jp2.add(jb1);
		jp2.add(jb2);
		jp2.add(jb3);
		jp2.add(jb4);
		jp2.add(jb5);
		jp2.add(jb6);
		jp2.add(jb7);
		jp2.add(jb8);
		jp2.add(jb9);
		jp2.add(jbAdd);
		jp2.add(jbMul);
		jp2.add(jbDiv);
		jp2.add(jbSub);
		jp2.add(jbSur);
		jp2.add(jbD);
		jp2.add(jbAC);
		jp2.add(jbR);
		jp2.setLayout(new GridLayout(4, 4));
		
		jp3 = new JPanel();
		jbAbout = new JButton("关于");   jbAbout.addActionListener(this);
		jbCancer = new JButton("关闭");  jbCancer.addActionListener(this);
		jp3.add(jbAbout);
		jp3.add(jbCancer);
		
		this.add(jp1,"North");
		this.add(jp2,"Center");
		this.add(jp3,"South");
		
		
		
	
		
	}
	public static void main(String[] args) {
		Calculator1 c = new Calculator1();
		c.setSize(300,280);
		c.set
DefaultClose
Operation(JFrame.EXIT_ON_CLOSE);
		c.setResizable(false);
		c.pack();
		c.setVisible(true);
		c.setLocationRelativeTo(null);   //将窗口显示在屏幕中央
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==jb0){
			num(0);
		}
		else if(e.getSource()==jb1){
			num(1);
		}
		else if(e.getSource()==jb2){
			num(2);
		}
		else if(e.getSource()==jb3){
			num(3);
		}
		else if(e.getSource()==jb4){
			num(4);
		}
		else if(e.getSource()==jb5){
			num(5);
		}
		else if(e.getSource()==jb6){
			num(6);
		}
		else if(e.getSource()==jb7){
			num(7);
		}
		else if(e.getSource()==jb8){
			num(8);
		}
		else if(e.getSource()==jb9){
			num(9);
		}
		else if(e.getSource()==jbAdd){
			jbD.setEnabled(true);
			sign(1);
		}
		else if(e.getSource()==jbSub){
			jbD.setEnabled(true);
			sign(2);
		}
		else if(e.getSource()==jbMul){
			jbD.setEnabled(true);
			sign(3);
		}
		else if(e.getSource()==jbDiv){
			jbD.setEnabled(true);
			sign(4);
		}
		else if(e.getSource()==jbSur){
			jbD.setEnabled(true);
			sign(5);
		}
		else if(e.getSource()==jbD){
			str=jtf.getText();
			str+=".";
			jtf.setText(str);
			jbD.setEnabled(false);
		}
		else if(e.getSource()==jbAC){
			jtf.setText("0");
		}
		
		else if(e.getSource()==jbR){
			jbD.setEnabled(true);
			num2 = Double.parseDouble(jtf.getText());
			if(add){
				num1=num1+num2;
			}
			else if(sub){
				num1=num1-num2;
			}
			else if(mul){
				num1=num1*num2;
			}
			else if(div){
				num1=num1/num2;
			}
			else if(sur){
				num1=num1%num2;
			}
			jtf.setText(String.valueOf(num1));
	        end=true; 
		}
		
		
		else if (e.getSource()==jbCancer) {
			System.exit(0);
		}
		
		else if (e.getSource()==jbAbout) {
			JOptionPane.showMessageDialog(null,"陈国权","消息",JOptionPane.INFORMATION_MESSAGE);
		}
		
	}
	private void sign(int i) {
		if(i==1){
			add=true;
			sub=false;
			mul=false;
			div=false;
			sur=false;
		}
		else if (i==2) {
			add=false;
			sub=true;
			mul=false;
			div=false;
			sur=false;
		}
		else if (i==3) {
			add=false;
			sub=false;
			mul=true;
			div=false;
			sur=false;
		}
		else if (i==4) {
			add=false;
			sub=false;
			mul=false;
			div=true;
			sur=false;
		}
		else if (i==5) {
			add=false;
			sub=false;
			mul=false;
			div=false;
			sur=true;
		}
		num1=Double.parseDouble(jtf.getText());
		end=true;
	}
	private void num(int i) {
		String s=null;
		s=String.valueOf(i);
		if(end){
			jtf.setText("0");
			end=false;
		}
		if(jtf.getText().equals("0")) {
			jtf.setText(s);
		}
		else {
			str=jtf.getText()+s;
			jtf.setText(str);
		}
		
	}
	
}