有一段JAVA小程序 在线求详细解释

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.*;
import javax.swing.*;
import java.util.*;

public class CalculatorA {
private JFrame jf;
private JButton[] jbs;
private JTextField jtf;
private JButton clear;
private double num1,num2,jieguo;
private char c;
/**
* 构造方法实例化属性
*
*/
public CalculatorA(){
jf=new JFrame("我的计算器v1.0");
jtf=new JTextField(20);
clear=new JButton("clear");
jbs=new JButton[16];
String str="123+456-789*0./=";
for(int i=0; i<str.length(); i++){
jbs[i]=new JButton(str.charAt(i)+"");
}
init();
addEventHandler();
// setFont();
// setColor();
showMe();
}

/**
* 布局图形界面
*
*/
public void init(){
// jf.setLayout(manager)
JPanel jp1=new JPanel();
jp1.add(jtf);

JPanel jp2=new JPanel();
jp2.setLayout(new GridLayout(4,4));
for(int i=0; i<16; i++){
jp2.add(jbs[i]);
}
JPanel jp3=new JPanel();
jp3.add(clear);
jf.add(jp1,BorderLayout.NORTH);
jf.add(jp2,BorderLayout.CENTER);
jf.add(jp3,BorderLayout.SOUTH);
}

public void setFont(){

}

public void setColor(){

}
public void addEventHandler(){
ActionListener lis=new ActionListener(){

public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
JButton jb=(JButton)e.getSource();
// String key=(String)e.getActionCommand();
String str =jb.getText().trim();//把字符串的首尾空格去掉!
// String str2=e.getActionCommand().trim();//返回事件源的文本内容
if("0123456789.".indexOf(str)!=-1){//如果是数字或点号
jtf.setText(jtf.getText()+str);
return;
}
if("+-*/".indexOf(str)!=-1){
num1=Double.parseDouble(jtf.getText());

jtf.setText("");
c=str.charAt(0);
jtf.setText("");
return ;
}
if(str.equals("=")){
num2=Double.parseDouble(jtf.getText());
// jtf.setText("");
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));
return;
}

if(e.getActionCommand().equals("clear")){

jtf.setText("");
return;
}
}
};
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 CalculatorA();

}
}

public class CalculatorA {
private JFrame jf;
private JButton[] jbs;
private JTextField jtf;
private JButton clear;
private double num1,num2,jieguo;
private char c;
/**
* 构造方法实例化属性
*
*/
public CalculatorA(){
jf=new JFrame("我的计算器v1.0"); //定义窗口的title
jtf=new JTextField(20);//定义文本域 也就是计算器的输入和现实区域
clear=new JButton("clear");// 定义按钮
jbs=new JButton[16];//定义按钮数组
String str="123+456-789*0./=";//此处用来批量创建数字和元素符号。
for(int i=0; i<str.length(); i++){//批量赋值。这样做使得定义按钮方便很多否则,你需要一个按钮一个按钮像上面的"clear"那样的定义
jbs[i]=new JButton(str.charAt(i)+"");
}
init();
addEventHandler();
// setFont();
// setColor();
showMe();
}

/**
* 布局图形界面
*
*/
public void init(){
// jf.setLayout(manager)
JPanel jp1=new JPanel();//定义面板,用来容纳上面的按钮文本域等组件
jp1.add(jtf);//将 文本域 让如面板中

JPanel jp2=new JPanel();//定义面板,用来容纳上面的按钮文本域等组件
jp2.setLayout(new GridLayout(4,4));//定义网格布局,类似html 的table一个4X4的格子,然后将计算的按钮放到这个面板中
for(int i=0; i<16; i++){
jp2.add(jbs[i]);
}
JPanel jp3=new JPanel();//定义面板,用来容纳上面的按钮文本域等组件
jp3.add(clear);//将 清除按钮 让如面板中
jf.add(jp1,BorderLayout.NORTH);//将显示数据面板,使用边框布局,放置最顶端。
jf.add(jp2,BorderLayout.CENTER);//将显示计算按钮面板,使用边框布局,放置中间。

jf.add(jp3,BorderLayout.SOUTH);//将显示清除按钮面板,使用边框布局,放置最底端。

}

public void setFont(){

}

public void setColor(){

}
public void addEventHandler(){//创建监听事件,用来监听每一个按钮,当点击后需要触发什么事件。
ActionListener lis=new ActionListener(){

public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
JButton jb=(JButton)e.getSource();//获取事件源
// String key=(String)e.getActionCommand();
String str =jb.getText().trim();//把字符串的首尾空格去掉!
// String str2=e.getActionCommand().trim();//返回事件源的文本内容
if("0123456789.".indexOf(str)!=-1){//如果是数字或点号
jtf.setText(jtf.getText()+str);//设置显示文本域,也就是你点击数字按钮,在显示文本域显示出你点击的值。
return;
}
if("+-*/".indexOf(str)!=-1){//当点击运算按钮触发的事件
num1=Double.parseDouble(jtf.getText());//获取文本域的值并转换类型并暂时保存起来。

jtf.setText("");
c=str.charAt(0);
jtf.setText("");
return ;
}
if(str.equals("=")){//根据点击的按钮式"="号执行结算结果
num2=Double.parseDouble(jtf.getText());
// jtf.setText("");
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)); //返回结算结果到显示文本域
return;
}

if(e.getActionCommand().equals("clear")){

jtf.setText("");//清空显示文本域
return;
}
}
};
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 CalculatorA();

}
}

这代码注释写的太累人了。小窗口费劲。给加点分吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-13
一.init()布局界面:
1.将显示我们输入的数字的文本框放置在整个计算器的北部也就是最上方
2.将数字键及加减乘除、小数点、等号等组件放在整个计算器的中部
3.将清除键放置在整个计算器的南部也就是最下方

二.addEventHandler()是对所有键添加事件处理:
0. 构造方法创建计算器所需的组件对象。
1. JButton jb=(JButton)e.getSource();获取数字或者符号
2. if("0123456789.".indexOf(str)!=-1)如果是数字或者小数点,文本框则追加我们的输入
3. if("+-*/".indexOf(str)!=-1)如果是符号,num1存放文本框现在的数,并且清空现文本框数字,并用c记录符号
4. if(str.equals("="))如果点击等号,num2存放文本框现在的数,并且进行计算,jieguo存放运算结果,并将结果显示在文本框中。
5. if(e.getActionCommand().equals("clear"))如果点击清空按钮,文本框清空
6. jbs[i].addActionListener(lis); clear.addActionListener(lis);
为按钮添加事件监听

三.showMe()让jf可以显示

最后写main方法
第2个回答  2010-07-13
就是一个计算机的加减乘除啊
第3个回答  2010-07-13
这是一个可以做 加减乘除的计算器。这个程都已经有了一些简单的注释了,
public CalculatorA(){
jf=new JFrame("我的计算器v1.0");
jtf=new JTextField(20); //文本框
clear=new JButton("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)+"");
}
init();
addEventHandler();
// setFont();
// setColor();
showMe();
/**
* 布局图形界面
*
*/
public void init(){
// jf.setLayout(manager)
JPanel jp1=new JPanel();
jp1.add(jtf); // 显示文本框,在面板容器上。

JPanel jp2=new JPanel(); //new一个面板容器
jp2.setLayout(new GridLayout(4,4)); //网格式布局
for(int i=0; i<16; i++){
jp2.add(jbs[i]);
} //把 按钮放到JPanel里
JPanel jp3=new JPanel();
jp3.add(clear);
jf.add(jp1,BorderLayout.NORTH);
jf.add(jp2,BorderLayout.CENTER);
jf.add(jp3,BorderLayout.SOUTH);
} //把以上 JPanel 放到JFrame里

public void setFont(){

}

public void setColor(){

}

}

/*上面的这些代码都是为了布局。
* 下面的代码,是事件的处理,
*/
public void (){ //
ActionListener lis=new ActionListener(){

public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
JButton jb=(JButton)e.getSource();
// String key=(String)e.getActionCommand();
String str =jb.getText().trim();//把字符串的首尾空格去掉!
// String str2=e.getActionCommand().trim();//返回事件源的文本内容
if("0123456789.".indexOf(str)!=-1){//如果是数字或点号
jtf.setText(jtf.getText()+str);
return;
}
if("+-*/".indexOf(str)!=-1){
num1=Double.parseDouble(jtf.getText());

jtf.setText("");
c=str.charAt(0);
jtf.setText("");
return ;
}
if(str.equals("=")){
num2=Double.parseDouble(jtf.getText());
// jtf.setText("");
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));
return;
}

if(e.getActionCommand().equals("clear")){

jtf.setText("");
return;
}
}
};
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 CalculatorA();

}
}

这些代码应该很好理解,就是取一个按钮的值,进行一下运算。