swing 制作简易计算器

/*
计算器的最简单类型

姓名:彼岸花
*/

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

class CalculatorFrame 
{
    private JFrame f1;          //实例化顶级容器
    private JPanel p1;         //第一个面板放在north
    private JPanel p2;         //第二个面板放在center
    private JTextField t1;      //显示计算数字的文本框
    private JButton[] arrbt;   //运算符的button按钮集合
    private String[] arrstr={"1","2","3","+","4",
    "5","6","-","7","8","9","*",".","0","=","/"};   //所需要的按钮
    private JButton jbt;  // 实例化清空按钮

    Double number;        //第一个数记录数
    String command=null;  //第二个数记录数
    
    public void init()
       {     
        count ct=new count();  
         BorderLayout blt=new BorderLayout(5,5);  //全局运用网格布局
          f1=new JFrame("计算器");
          f1.setLayout(blt);
          f1.setResizable(false);     //把窗体大小调为不可更改
          
        
           p1=new JPanel();
           t1=new JTextField();
           t1.setColumns(20);
               jbt=new JButton("CE");
                p1.add(t1);
                p1.add(jbt);//把文本框和清除按钮放在p1面板上然后放在north
                jbt.addActionListener(ct);//对清除按钮进行监视
              
              
            p2=new JPanel();
           arrbt=new JButton[16];
           p2.setLayout(new GridLayout(4,4,10,10));//在p2面板中实例化网格布局然后放入需要的按钮
           for(Integer i=0;i<arrbt.length;i++)  //用for循环把需要的按钮排在p2面板中
           {
               arrbt[i]=new JButton(arrstr[i]); 
               arrbt[i].addActionListener(ct);  //对数字按钮 监视
               p2.add(arrbt[i]);
           }
           f1.add(p1,BorderLayout.NORTH);  //把p1面板放在顶级容器north
           f1.add(p2,BorderLayout.CENTER);  //把p2面板放在顶级容器center
           f1.setBounds(800, 350, 300, 300);  //设置窗口的大小和位置
           f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认窗口关闭运行关闭
           f1.setVisible(true);   //窗口可视化
           
       }
    
     
     
      class count implements ActionListener  //连接按钮点击事件
      {
        @Override
        public void actionPerformed(ActionEvent e) {
      String input=((JButton)e.getSource()).getText();   //与button按钮进行事件连接
      try
      {
          switch(input)  //用switch语句进行数字控制
          {
          case"1":
          case"2":
          case"3":
          case"4":
          case"5":
          case"6":
          case"7":
          case"8":
          case"9":  
          case"0":
          case".":
         t1.setText(t1.getText()+input); //把数字输入到文本框中
         break;
          case"+":
          case"-":
          case"*":  
          case"/":
         command=input;  //第二个记录数再次进行记录
         number=Double.parseDouble(t1.getText());//用第一记录数记录数字是进行+,-,*,/的那种运算
         t1.setText(null);
         break;
          case"=": 
              Double dl=0.0; //用dl记录下两个数的运算值
              if(command!=null)//当第二个数不为空的时候进行运算
              {
                 
                 switch(command)
                 {
                  case"+":
                      dl=number+Double.parseDouble(t1.getText());
                      break;
                     case"-":
                        dl=number-Double.parseDouble(t1.getText());
                      break;
                     case"*":  
                        dl=number*Double.parseDouble(t1.getText());                      
                      break;
                     case"/":
                        dl=number/Double.parseDouble(t1.getText());
                      break;  
                 }
                    number=dl;
                  t1.setText(dl.toString());  //以字符串形式输入到文本框中
              }
              break;

          case"CE":
              number=0.0;
              t1.setText(null);   //数据进行清除
         default:
              break;
          }
      }
          catch(Exception ex)
          {
              t1.setText("您的输入有误");   
          }
              
          
       
        }
        
}
}
public class javajisuanqi{
    public static void main(String[] args) {
        CalculatorFrame frm=new CalculatorFrame();
        frm.init();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值