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)); //设定该面板为4行4列布局 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 其实我没用过,但这是简单的计算器实现,应该比较好理解