随笔 - 1  文章 - 0  trackbacks - 0
<2025年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;

public class jisuanqi extends JFrame implements ActionListener{
        private float Num1,Num2,Num; //分别用来存储运算数和结果
        private char sign;           //存储输入的运算符
        private double Num0;
      
        //定义并初始化控件
        private JPanel p1=new JPanel();
        private JPanel p2=new JPanel();
        private JPanel p3=new JPanel();
        private JPanel p4=new JPanel();
        private JPanel p5=new JPanel();
        private JPanel p6=new JPanel();
        private JPanel p7=new JPanel();
        private JPanel p8=new JPanel();
        private JPanel p9=new JPanel();
       
    private JTextField text=new JTextField("0",20);//定义文本域初始值为0
       
        private JButton clear=new JButton("清除");
       
        private JButton b0=new JButton("0");
        private JButton b1=new JButton("1");
        private JButton b2=new JButton("2");
        private JButton b3=new JButton("3");
        private JButton b4=new JButton("4");
        private JButton b5=new JButton("5");
        private JButton b6=new JButton("6");
        private JButton b7=new JButton("7");
        private JButton b8=new JButton("8");
        private JButton b9=new JButton("9");
        private JButton a=new JButton("A");
        private JButton b=new JButton("B");
        private JButton c=new JButton("C");
        private JButton d=new JButton("D");
        private JButton e=new JButton("E");
        private JButton f=new JButton("F");
        private JButton dian=new JButton(".");
       
     
         
        private JButton cheng=new JButton("*");
        private JButton chu=new JButton("/");
        private JButton jia=new JButton("+");
        private JButton jian=new JButton("-");
        private JButton deng=new JButton("=");
         private JButton sqr=new JButton("sqrt");
        private JButton mee=new JButton("^");
       
       
   
   
         private JRadioButton ox=new JRadioButton("二进制",false);//初始
         private JRadioButton bx=new JRadioButton("八进制",false);
         private JRadioButton dx=new JRadioButton("十进制",true);
         private JRadioButton hex=new JRadioButton("十六进制",false);
        
       
       
     
public jisuanqi(){ 
                super("计算器");
                setResizable(false);//屏蔽最大化
                this.getContentPane().setLayout(new GridLayout(9,1));
                this.getContentPane().add(p1);
                this.getContentPane().add(p6);
                this.getContentPane().add(p2);
                this.getContentPane().add(p3);
                this.getContentPane().add(p4);
                this.getContentPane().add(p5);
                this.getContentPane().add(p7);
                this.getContentPane().add(p8);
                this.getContentPane().add(p9);   
                 
                //按钮布局
                p1.add(text);

                p6.setLayout(new BorderLayout());
                p6.add("Center",clear);
               
                p2.setLayout(new GridLayout(1,4));
                p2.add(ox); p2.add(bx); p2.add(dx); p2.add(hex);
               
                p3.setLayout(new GridLayout(1,4));
                p3.add(b7); p3.add(b8); p3.add(b9); p3.add(a);
               
                p4.setLayout(new GridLayout(1,4));
                p4.add(b4); p4.add(b5); p4.add(b6); p4.add(b);
               
                p5.setLayout(new GridLayout(1,4));
                p5.add(b1); p5.add(b2); p5.add(b3); p5.add(c);
               
                p7.setLayout(new GridLayout(1,4));
                p7.add(dian); p7.add(b0); p7.add(mee); p7.add(d);
               
                p8.setLayout(new GridLayout(1,4));
                p8.add(jia); p8.add(jian); p8.add(sqr); p8.add(e);
               
                p9.setLayout(new GridLayout(1,4));
                p9.add(cheng); p9.add(chu); p9.add(deng);p9.add(f);
               
                b0.addActionListener(this);
                b1.addActionListener(this);
                b2.addActionListener(this);
                b3.addActionListener(this);
                b4.addActionListener(this);
                b5.addActionListener(this);
                b6.addActionListener(this);
                b7.addActionListener(this);
                b8.addActionListener(this);
                b9.addActionListener(this);
                a.addActionListener(this);
                b.addActionListener(this);
                c.addActionListener(this);
                d.addActionListener(this);
                e.addActionListener(this);
                f.addActionListener(this);
               
                a.setEnabled(false); //初始
                b.setEnabled(false);
                c.setEnabled(false);
                d.setEnabled(false);
                e.setEnabled(false);
                f.setEnabled(false);
               
     
              
                                b0.addKeyListener(new KeyBoard());
                                b1.addKeyListener(new KeyBoard());
                                b2.addKeyListener(new KeyBoard());
                                b3.addKeyListener(new KeyBoard());
                                b4.addKeyListener(new KeyBoard());
                                b5.addKeyListener(new KeyBoard());
                                b6.addKeyListener(new KeyBoard());
                                b7.addKeyListener(new KeyBoard());
                                b8.addKeyListener(new KeyBoard());
                                b9.addKeyListener(new KeyBoard());
                                a.addKeyListener(new KeyBoard());
                                b.addKeyListener(new KeyBoard());
                                c.addKeyListener(new KeyBoard());
                                d.addKeyListener(new KeyBoard());
                                e.addKeyListener(new KeyBoard());
                                f.addKeyListener(new KeyBoard());
                               
      b0.setForeground(Color.blue);
      b1.setForeground( Color.blue);
      b2.setForeground( Color.blue);
      b3.setForeground( Color.blue);
      b4.setForeground( Color.blue);
      b5.setForeground( Color.blue);
      b6.setForeground( Color.blue);
      b7.setForeground( Color.blue);
      b8.setForeground( Color.blue);
      b9.setForeground( Color.blue);
      a.setForeground( Color.blue);
      b.setForeground( Color.blue);
      c.setForeground( Color.blue);
      d.setForeground( Color.blue);
      e.setForeground( Color.blue);
      f.setForeground( Color.blue);
      dian.setForeground( Color.blue);
     
     
                clear.addActionListener(this);
                jia.addActionListener(this);
                jian.addActionListener(this);
                cheng.addActionListener(this);
                chu.addActionListener(this);
                deng.addActionListener(this);
                dian.addActionListener(this);
                sqr.addActionListener(this);
                mee.addActionListener(this);

                                clear.addKeyListener(new KeyBoard());
                                jia.addKeyListener(new KeyBoard());
                                jian.addKeyListener(new KeyBoard());
                                cheng.addKeyListener(new KeyBoard());
                                chu.addKeyListener(new KeyBoard());
                                deng.addKeyListener(new KeyBoard());
                                dian.addKeyListener(new KeyBoard());
                                sqr.addKeyListener(new KeyBoard());
                                mee.addKeyListener(new KeyBoard());
                              
     cheng.setForeground(Color.red);
     chu.setForeground(Color.red);
     jia.setForeground(Color.red);
     jian.setForeground(Color.red);
     deng.setForeground(Color.black);
     sqr.setForeground(Color.red);
     mee.setForeground(Color.red);
                               
                ox.addItemListener(new checkbox(2));
                bx.addItemListener(new checkbox(8));
                dx.addItemListener(new checkbox(10));
                hex.addItemListener(new checkbox(16));
                   
                        /*private */ButtonGroup tk=new ButtonGroup();
                        tk.add(ox);
                        tk.add(bx);
                        tk.add(dx);
                        tk.add(hex);
                 
         ox.setForeground(Color.black);
         bx.setForeground(Color.black);
         dx.setForeground(Color.black);
         hex.setForeground(Color.black);


 text.addKeyListener(new KeyBoard());
               
                pack();show();
               
                //窗口关闭
                addWindowListener(new WindowAdapter(){
                        public void windowClosing(WindowEvent we){
                                System.exit(0);
                                }
                        });
                        text.setEditable(false);//去掉文本的可编辑性
                        text.setHorizontalAlignment(text.RIGHT);//文本右对齐
                }
        public class checkbox implements ItemListener{
   int k;
     public checkbox(int kt){
  k=kt;
 }

public void itemStateChanged(ItemEvent ev)
{
//规定当进制转换时以前输入的运算符失效
//二进制
if (k==2)
{a.setEnabled(false);
 b.setEnabled(false);
 c.setEnabled(false);
 d.setEnabled(false);
 e.setEnabled(false);
 f.setEnabled(false);
 b9.setEnabled(false);
 b8.setEnabled(false);
 b7.setEnabled(false);
 b6.setEnabled(false);
 b5.setEnabled(false);
 b4.setEnabled(false);
 b3.setEnabled(false);
 b2.setEnabled(false);
 b1.setEnabled(true);
 b0.setEnabled(true); 
 dian.setEnabled(false);
 cheng.setEnabled(false);  
 chu.setEnabled(false);
 jia.setEnabled(true);
 jian.setEnabled(true); 
 sqr.setEnabled(false);
 mee.setEnabled(false);
 }
 if (k==8)
{a.setEnabled(false);
 b.setEnabled(false);
 c.setEnabled(false);
 d.setEnabled(false);
 e.setEnabled(false);
 f.setEnabled(false);
 b9.setEnabled(false);
 b8.setEnabled(false);
 b7.setEnabled(true);
 b6.setEnabled(true);
 b5.setEnabled(true);
 b4.setEnabled(true);
 b3.setEnabled(true);
 b2.setEnabled(true);
 b1.setEnabled(true);
 b0.setEnabled(true); 
 dian.setEnabled(false);
 cheng.setEnabled(false);  
 chu.setEnabled(false);
 jia.setEnabled(true);
 jian.setEnabled(true); 
 sqr.setEnabled(false);
 mee.setEnabled(false);
 

  Num0=Double.parseDouble(text.getText());
                 Num0=Math.sqrt(Num0);
                 text.setText(""+Num0);
 
 }
 if(k==10)
 {a.setEnabled(false);
 b.setEnabled(false);
 c.setEnabled(false);
 d.setEnabled(false);
 e.setEnabled(false);
 f.setEnabled(false);
 b9.setEnabled(true);
 b8.setEnabled(true);
 b7.setEnabled(true);
 b6.setEnabled(true);
 b5.setEnabled(true);
 b4.setEnabled(true);
 b3.setEnabled(true);
 b2.setEnabled(true);
 b1.setEnabled(true);
 b0.setEnabled(true); 
 dian.setEnabled(true);
 cheng.setEnabled(true);  
 chu.setEnabled(true);
 jia.setEnabled(true);
 jian.setEnabled(true); 
 sqr.setEnabled(true);
 mee.setEnabled(true);
 }
 if(k==16)
 {a.setEnabled(true);
 b.setEnabled(true);
 c.setEnabled(true);
 d.setEnabled(true);
 e.setEnabled(true);
 f.setEnabled(true);
 b9.setEnabled(true);
 b8.setEnabled(true);
 b7.setEnabled(true);
 b6.setEnabled(true);
 b5.setEnabled(true);
 b4.setEnabled(true);
 b3.setEnabled(true);
 b2.setEnabled(true);
 b1.setEnabled(true);
 b0.setEnabled(true); 
 dian.setEnabled(false);
 cheng.setEnabled(false);  
 chu.setEnabled(false);
 jia.setEnabled(true);
 jian.setEnabled(true); 
 sqr.setEnabled(false);
 mee.setEnabled(false);
 }
  }}
       
        //按钮事件
        public void actionPerformed(ActionEvent e){
                String input=e.getActionCommand();//定义input存储按钮点击产生的值
                String str="0123456789ABCDEF";
                String ysf="+-*^/";
               
                //数字输入
                  if(str.indexOf(input)>=0){
                        if(text.getText().equals("0"))
                          text.setText(input);//若TextField中初始值为零则TextField中显示输入的数字
                        else
                          text.setText(text.getText()+input);//如果TextField中的值不是零则叠加
                        }
                       

 

                       
                //小数点
                else if(input.equals("."))
                      text.setText(text.getText()+input);
                     
                 //求开根
                 else if(input.equals("sqrt")){
                 Num0=Double.parseDouble(text.getText());
                 Num0=Math.sqrt(Num0);
                 text.setText(""+Num0);
                 }
                  
                      
                
                //运算符
                else if(ysf.indexOf(input)>=0){
                        Num1=Float.parseFloat(text.getText());//输入运算符时Num1存储TextField中的值
                        text.setText("");
                        sign=ysf.charAt(ysf.indexOf(input));//sign读取输入的运算符
                        }
               
                //等号       
                else if(input.equals("=")){
                        Num2=Float.parseFloat(text.getText());//Num2存储点击运算符后的数值
                       
                        switch(sign){
                                //加法
                                case '+':{
                                        Num=Num1+Num2;
                                        text.setText(""+Num);
                                        break;
                                        }
                                       
                                //减法
                                case '-':{
                                        Num=Num1-Num2;
                                        text.setText(""+Num);
                                        break;
                                        }
                               
                                //乘法
                                case '*':{
                                        Num=Num1*Num2;
                                        text.setText(""+Num);
                                        break;
                                        }
                                       
                                //除法
                                case '/':{
                                        if(Num2==0)
                                          text.setText("除数不能为零");//除数为零,则提示除数不能为零
                                        else{
                                                Num=Num1/Num2;
                                                text.setText(""+Num);
                                                break;
                                                }
                               
                                        }
                                  //求幂
                                 case '^':{
                                      int i=0;
                                      float s=1;
                                          for (i=1;i<=Num2;i++)
                                              s=s*Num1;
                                               Num=s;
                                               text.setText(""+Num);
                                                break;
                              
                                             }
                                }
                               
                          }   
                           
                   
                       
                        //清除
                        else if(input.equals("清除")){
                                Num=' ';
                                Num1=' ';
                                Num2=' ';
                                sign=' ';
                                text.setText("0");
                                }
                }
                
                   public static void main(String args[]){
     
                jisuanqi jsq=new jisuanqi();
                }
        }

posted @ 2007-12-28 08:22 小妮子 阅读(509) | 评论 (0)编辑 收藏
仅列出标题