有些没写那是因为我觉得你看得懂,你自己也写了很多,可见你还是懂得的。自己动手多写些代码你会发现比看得来的实在些。这种代码以后你会发现都不想看了,因为太简单了。
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
}
init();//编一个图形界面函数这里是调用。
addEventHandler();//事件函数
showMe();//显示函数
}
//布局图形界面
public void init(){
JPanel jp1=new JPanel();//建面板
jp1.add(jtf);//将文本框添加到面板
JPanel jp2=new JPanel();//建面板
jp2.setLayout(new GridLayout(4,4));//设置面板的格式是4行4列
for(int i=0; i<16; i++){//4行4列共16个格子正好和你所定义的16和按钮匹配故循环16次
jp2.add(jbs[i]);//将按钮添加到面板jp2
}
JPanel jp3=new JPanel();();//建面板
jp3.add(clear);//将清楚按钮加到面板上
jf.add(jp1,BorderLayout.NORTH);//面板1显示画面的北
jf.add(jp2,BorderLayout.CENTER);//面板2显示在画面的中间
jf.add(jp3,BorderLayout.SOUTH);//面板3显示在画面的南
}
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());将值转换为doublel类型
jtf.setText("");
c=str.charAt(0);
jtf.setText("");
return ;
}
if(str.equals("=")){//如果是等
num2=Double.parseDouble(jtf.getText());
switch(c){//选择运算符
case '+': jieguo=num1+num2;break;//计算
case '-': jieguo=num1-num2;break;
case '*': jieguo=num1*num2; break;
case '/': jieguo=num1/num2;break;
}
jtf.setText(Double.toString(jieguo));//将double结果转为字符窜型然后显示在文本框中
return;
}
if(e.getActionCommand().equals("clear")){//清理
jtf.setText("");
return;
}
}
};
for(int i=0; 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();
}
楼上很有耐心。。。
下个源码,看下源码的注释,或者下个javadoc啥的,每个类,方法啥的都有注释。