kkk

import java.awt.*;                             //导入awt
import java.awt.event.ActionEvent;             //导入awt.event.ActionEvent
import java.awt.event.ActionListener;          //导入java.awt.event.ActionListener
import javax.swing.*;                          //导入javax.swing

public class abc {                      //定义Calculator
private JFrame jf;                             //定义JFrame jf
private JButton[] jbs;                         //定义数组按钮jbs
private JTextField jtf;                        //定义 TextField
private JButton clear;                         //定义清除按钮
private double num1,num2,jieguo;               //定义三个double类型的变量
private char c;                                //定义字符型变量c
//构造方法实例化属性
public abc(){                           //构造函数开始
jf=new JFrame("我的计算器v1.0");               //JFrame属性赋值
jtf=new JTextField(20);                        //
clear=new JButton("clear");                    //创建clear按钮
jbs=new JButton[16];                           //创建16个按钮
String str="123+456-789*0./=";        //创建字符串也就是每个按钮的文本         
for(int i=0; i<str.length(); i++){ //对字符串进行遍历截取字符
jbs[i]=new JButton(str.charAt(i)+""); //根据字符创建按钮并将按钮放入jbs集合
}
init(); //调用init方法
addEventHandler();//调用addEventHandler方法
showMe();//调用showMe方法
}
//布局图形界面
public void init(){
JPanel jp1=new JPanel(); //创建一个面板
jp1.add(jtf); //先将文本框添加到面也就是显示结果和输入数字的文本框

JPanel jp2=new JPanel(); //创建一个面板2
jp2.setLayout(new GridLayout(4,4)); //设定该面板为44列布局
for(int i=0; i<16; i++){ //循环jbs 
jp2.add(jbs[i]); //将按钮一个个取出来放到面板2里面
}
JPanel jp3=new JPanel();//创建面板3
jp3.add(clear); //添加清楚按钮
jf.add(jp1,BorderLayout.NORTH);//这三句是将创建三个面板放入大的面板中
jf.add(jp2,BorderLayout.CENTER);
jf.add(jp3,BorderLayout.SOUTH);
}
public void addEventHandler(){
ActionListener lis=new ActionListener(){
//点击触发事件
public void actionPerformed(ActionEvent e){
JButton jb=(JButton)e.getSource();//获取到事件源也就是被点击的哪个按钮
String str =jb.getText().trim();//把字符串的首尾空格去掉!
if("0123456789.".indexOf(str)!=-1){//如果是数字或点号
jtf.setText(jtf.getText()+str); //将文本框的内容加上当前的输入的数字
return;
}
if("+-*/".indexOf(str)!=-1){//如果是加减乘除
num1=Double.parseDouble(jtf.getText());//先获取文本框的值并保存到num1

jtf.setText(""); //然后将文本框清空
c=str.charAt(0); //获取操作符号并保存到c
jtf.setText("");//这里重复操作垃圾代码
return ;
}
if(str.equals("=")){//如果输入的等于操作
num2=Double.parseDouble(jtf.getText()); //获取文本框的值保存到num2
switch(c){//判断之前输入的符号
case '+': jieguo=num1+num2;break;//这里的四个就是做加减乘除操作要点就是讲之前保存的num1  num2获取出来进行操作将结果保存 jieguo
case '-': jieguo=num1-num2;break;
case '*': jieguo=num1*num2; break;
case '/': jieguo=num1/num2;break;
}
jtf.setText(Double.toString(jieguo));//jieguo的值付给当前文本框
return;
}

if(e.getActionCommand().equals("clear")){//如果按时清除按钮

jtf.setText(""); //情况文本框内容不过这里也有bug 个人认为应该把num1  num2也清0
return;
}
}
};
//jbs集合进行遍历
for(int i=0; i<jbs.length; i++){
//给按钮添加事件
jbs[i].addActionListener(lis);
}
//对清除按钮添加事件
clear.addActionListener(lis);      //
}

public void showMe(){
jf.pack();
jf.setVisible(true);              //设置可见
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
public static void main(String[] args){
new CaculatorA();

}
}

JFrame 其实我没用过,但这是简单的计算器实现,应该比较好理解

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值