求一个java计算器程序 要注释!

要求:顶级类是Frame 声明一个JTextField和Panel 在Panel中添加Button 将JTextField和Panel添加到顶级类 数字按钮0-9是一个类 符号按钮+ - * / 是一个类 分别设置返回数字和符号的方法 其他6个通过Button直接创建
麻烦请一定按要求写 写一下注释方便我看懂 一定会给加分的 谢谢了

package CalcTest;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.ScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;

import org.w3c.dom.Text;

import com.sun.org.apache.bcel.internal.generic.JsrInstruction;

public class Calc extends JFrame implements ActionListener{
public final int max = 8;//定义文本框最多输入字符
String copy;
boolean enter;
int key = -1,prekey = -1;
double vard,answerd;

String curDate="";
Double opate1 = 0.0;
Double opate2 = 0.0;
DecimalFormat df;

JPanel ButtonPanel,okPanel;
JButton jb[];
JTextField jtf;
JScrollPane jsp;
JButton jia,jian,cheng,chu,dian,dengyu;
JMenuBar jmb;
JMenu bjM,ckM,bzM;
JTextArea jta;
JMenuItem copyM,pasteM,closeM,helpM,gyM;
JButton b1;
boolean start;
public Calc(){
enter = true;
start =true;
df = new DecimalFormat("0.#########");

Container c = getContentPane();
//**以下为菜单之类的
jmb = new JMenuBar();
bjM = new JMenu("编辑(E)");
ckM = new JMenu("查看(V)");
bzM = new JMenu("帮助(H)");

copyM = new JMenuItem("复制(C)");
pasteM = new JMenuItem("粘贴(V)");
closeM = new JMenuItem("关闭(E)");
helpM = new JMenuItem("帮助主题");
gyM = new JMenuItem("关于计算器");

jmb.add(bjM);
jmb.add(ckM);
jmb.add(bzM);

bjM.add(copyM);
bjM.add(pasteM);
ckM.add(closeM);
bzM.add(helpM);
bzM.add(gyM);
setJMenuBar(jmb);//显示菜单条
//**以上为菜单类的

//**以下注册菜单监听器
copyM.addActionListener(this);
pasteM.addActionListener(this);
closeM.addActionListener(this);
helpM.addActionListener(this);
gyM.addActionListener(this);
//**以上注册菜单监听器

jtf = new JTextField(35);
jtf.setText("0.");
jtf.setEditable(false);
//jtf.setComponentOrientation(java.awt.ComponentOrientation.RIGHT_TO_LEFT);//设置文本框从右往左
jtf.setHorizontalAlignment(JTextField.RIGHT);//跟上面效果一样
jtf.setText("");//设置每次都重新获取
//**以下为按钮设置
jb = new JButton[10];

jia = new JButton("+");
jian = new JButton("-");
cheng = new JButton("*");
chu = new JButton("\\");
dian = new JButton(".");
dengyu = new JButton("=");

jia.addActionListener(this);
jian.addActionListener(this);
cheng.addActionListener(this);
chu.addActionListener(this);
dian.addActionListener(this);
dengyu.addActionListener(this);

ButtonPanel = new JPanel();
for(int i=0;i<jb.length;i++){
jb[i] = new JButton(Integer.toString(i));//实现将整形转字符串
jb[i].setForeground(new Color(99,00,00));
jb[i].addActionListener(Calc.this);//为每个按钮注册监听器
}
ButtonPanel.setLayout(new GridLayout(4,4));//设置格子布局4行4列
ButtonPanel.add(jb[1]);
ButtonPanel.add(jb[2]);
ButtonPanel.add(jb[3]);
ButtonPanel.add(jia);
ButtonPanel.add(jb[4]);
ButtonPanel.add(jb[5]);
ButtonPanel.add(jb[6]);
ButtonPanel.add(jian);
ButtonPanel.add(jb[7]);
ButtonPanel.add(jb[8]);
ButtonPanel.add(jb[9]);
ButtonPanel.add(cheng);
ButtonPanel.add(jb[0]);
ButtonPanel.add(dian);
ButtonPanel.add(dengyu);
ButtonPanel.add(chu);
//**以上为按钮设置

//**以下为帮助主题
jta = new JTextArea(5,10);
jsp = new JScrollPane(jta);
jta.setEditable(false);
jta.setFont(new Font("楷体",Font.BOLD,20));
jta.append("执行简单计算\n");
jta.append("1. 键入计算的第一个数字。\n");
jta.append("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n");
jta.append("3. 键入计算的下一个数字。\n");
jta.append("4. 输入所有剩余的运算符和数字。\n");
jta.append("5. 单击“=”。\n");

//**以上为帮助主题

//**以下为清零
okPanel = new JPanel();
b1 = new JButton("C");
okPanel.add(b1);
//**以上为清零
b1.addActionListener(this);//注册监听器
c.add(jtf,BorderLayout.NORTH);
c.add(ButtonPanel,BorderLayout.CENTER);
c.add(okPanel,BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
public void actionPerformed(ActionEvent e) {
Object temp = e.getSource();

if(temp == dian && enter == true){
boolean isDot = false;
if(jtf.getText().length()==0)
isDot=true;

for(int i = 0;i<jtf.getText().length();i++){
if('.'== jtf.getText().charAt(i)){
System.out.println(i);
isDot = true;
break;
}
}
if(isDot==false)
jtf.setText(jtf.getText() + ".");
}

if(jtf.getText().length()==max){
jtf.setText("输入超出最大长度");
enter=false;
}

if((temp == jia || temp == jian || temp == cheng || temp ==chu) && enter == true){
if(temp == jia){
switch (prekey) {
case 0:
answerd += Double.parseDouble(jtf.getText());//将String值转换成DOUBLE,返回一个新的double值
break;
case 1:
answerd -= Double.parseDouble(jtf.getText());
case 2:
answerd *= Double.parseDouble(jtf.getText());
case 3:
if (Double.parseDouble(jtf.getText()) == 0) {
jtf.setText("除数不能为零");
enter = false;
}
else
answerd /= Double.parseDouble(jtf.getText());
break;
default:
answerd = Double.parseDouble(jtf.getText());
System.out.println(answerd);
break;
}
jtf.setText("");
prekey = key = 0;
}
if(temp==jian){
switch (prekey) {
case 0:
answerd += Double.parseDouble(jtf.getText());
break;
case 1:
answerd -= Double.parseDouble(jtf.getText());
case 2:
answerd *= Double.parseDouble(jtf.getText());
case 3:
if (Double.parseDouble(jtf.getText()) == 0) {
jtf.setText("除数不能为零");
enter = false;
}
else
answerd /= Double.parseDouble(jtf.getText());
break;
default:
answerd = Double.parseDouble(jtf.getText());
break;
}
jtf.setText("");
prekey = key = 1;
}
if(temp==cheng){
switch (prekey) {
case 0:
answerd += Double.parseDouble(jtf.getText());
break;
case 1:
answerd -= Double.parseDouble(jtf.getText());
case 2:
answerd *= Double.parseDouble(jtf.getText());
case 3:
if (Double.parseDouble(jtf.getText()) == 0) {
jtf.setText("除数不能为零");
enter = false;
}
else
answerd /= Double.parseDouble(jtf.getText());
break;
default:
answerd = Double.parseDouble(jtf.getText());
break;
}
jtf.setText("");
prekey = key = 2;
}
if(temp==chu){
switch (prekey) {
case 0:
answerd += Double.parseDouble(jtf.getText());
break;
case 1:
answerd -= Double.parseDouble(jtf.getText());
case 2:
answerd *= Double.parseDouble(jtf.getText());
case 3:
if (Double.parseDouble(jtf.getText()) == 0) {
jtf.setText("除数不能为零");
enter = false;
}
else
answerd /= Double.parseDouble(jtf.getText());
break;
default:
answerd = Double.parseDouble(jtf.getText());
break;
}
jtf.setText("");
prekey = key = 3;
}
}

if(temp==dengyu && enter==true){
if(prekey==5){
if(key==0){
answerd += vard;
jtf.setText(df.format(answerd));// 格式化一个 double 值,以生成一个字符串。
}
if(key==1){
answerd -= vard;
jtf.setText(df.format(answerd));
}
if(key==2){
answerd *= vard;
jtf.setText(df.format(answerd));
}
if(key==3){
if(Double.parseDouble(jtf.getText())==0){
jtf.setText("除数不能为0");
enter = false;
}else {
answerd /= vard;
jtf.setText(df.format(answerd));
}
}
}else {
vard = Double.parseDouble(jtf.getText());
System.out.println(vard);
if(key==0){
prekey = -1;
answerd += Double.parseDouble(jtf.getText());
jtf.setText(df.format(answerd));
}
if(key==1){
prekey = -1;
answerd -= Double.parseDouble(jtf.getText());
jtf.setText(df.format(answerd));
}
if(key==2){
prekey = -1;
answerd *= Double.parseDouble(jtf.getText());
jtf.setText(df.format(answerd));
}
if(key==3){
prekey = -1;
if(Double.parseDouble(jtf.getText())==0){
jtf.setText("除数不能为0");
enter = false;
}else {
answerd /= Double.parseDouble(jtf.getText());
jtf.setText(df.format(answerd));
}
}
}
prekey=5;
}

if(temp==b1){
jtf.setText("");
enter=true;
}

//将按钮挨个转换为字符串
for(int i=0;i<jb.length;i++){
if(temp==jb[i] && enter==true){
jtf.setText(jtf.getText() + Integer.toString(i));
}
}

//**以下为MemuItem进行事件
if(temp==copyM){
copy = jtf.getText();
}
if(temp==pasteM){
jtf.setText(copy);
}

if(temp==closeM){
dispose();
System.exit(0);
}
if(temp==gyM){
//JOptionPane.showMessageDialog(gyM,jsp);
JOptionPane.showMessageDialog(gyM, jsp);
}
if(temp == helpM){
JOptionPane.showMessageDialog(helpM,"使用“计算器”可以完成任意的通常借助手持计算器来完成的标准运算。 \n “计算器”可用于基本的算术运算,比如加减运算等。 \n 同时它还具有科学计算器的功能,比如对数运算和阶乘运算等。");
}
//**以上为MemuItem进行事件

}

public static void main(String[] args) {
Calc cc = new Calc();
cc.setTitle("计算器 v1.0");
cc.setSize(400, 400);
cc.setBounds(300, 300, 300, 300);
cc.setVisible(true);
}

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-05
http://hi.baidu.com/zpsailor/blog/item/6918f41696e1d9084b90a737.html
这是我之前写的一个计算器程序,注解不多,但很简单易懂,希望对你有帮助,如果有什么问题你可以问我哈 邮箱zpsailor@163.com

求JAVA编写的 简易计算器程序,附上注释
import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Calculator implements ActionListener { String s="",s1;double d1,d2;JFrame jf = new JFrame("小计算器by Graduate") ;JTextField tf = new JTextField();public void init()\/\/实现计算器界面 { Container c...

用JAVA编写的科学计算器源代码
这个科学计算器支持基本的四则运算(加、减、乘、除)以及一些科学运算(正弦、余弦、正切、对数、指数和平方根)。用户可以通过输入相应的操作和两个数字来执行计算。例如,输入“add 2 3”将计算2加3的结果。代码首先导入了`Scanner`类,用于从用户处获取输入。然后,在`main`方法中,创建...

求基于Java开发的多功能计算器源码,要有注释的,谢谢!
import java.awt.*;import java.awt.event.*;public class Calculator extends WindowAdapter implements ActionListener { private double result=0,data1=0,radixPointDepth=1;private boolean radixPointIndicate=false,resultIndicate=false;private char prec='+';private Frame f;private TextField tf;...

求一个java计算器原代码,最好有文档说明。
import java.awt.*;import java.awt.event.*;public class Calculator extends WindowAdapter implements ActionListener { private double result=0,data1=0,radixPointDepth=1;private boolean radixPointIndicate=false,resultIndicate=false;private char prec='+';private Frame f;private TextField tf;...

这里有个JAVA计算器的小程序,希望帮忙加下注释,少许修改
Java 浮点数 精确计算 如果我们编译运行下面这个程序会看到什么?public class Test{ public static void main(String args[]){ System.out.println(0.05+0.01);System.out.println(1.0-0.42);System.out.println(4.015*100);System.out.println(123.3\/100);} };你没有看错!结果确实是 0...

java怎样写一个简单的计算器
以下是一个简单的例子,这个计算器可以执行加、减、乘、除操作:import java.util.Scanner;public class Calculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);System.out.println("Enter first number:");double num1 = scanner.nextDouble();System....

用Java程序设计语言设计一个计算器
setTitle("简单计算器");\/\/ 初始化变量 dotExist = false; \/\/ 表示当前的数是否有小数点 operated = false; \/\/ 表示任意运算符是否被按下 equaled = false; \/\/ 表示等号是否被按下 storedNumber = 0;lastOperator = '?';\/\/ 初始化窗口变量 operation = new JTextField("0");operation....

求一计算器java代码,最好简单一点(图形界面)
tf1.setText("0"); tf2=new TextField(10);\/\/显示记忆的索引值 tf2.setEditable(false); \/\/实例化所有按钮、设置其前景色并注册监听器 b0=new Button("Backspace"); b0.setForeground(Color.red); b0.addActionListener(new Bt()); b1=new Button("CE"); b1.setForeground(Color.red); b1.add...

用java编写科学计算器的代码!一定要有求立方
import java.awt.*;import javax.swing.*;import java.awt.event.*;class Counter extends WindowAdapter { static JFrame f=new JFrame("计算器");static JTextField text1=new JTextField("0.");static String source="";static String cal="";static String object="";static boolean flag=...

java编一个计算器的代码
代码如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class Counter { public static void main(String[] args) { CounterFrame frame = new CounterFrame();frame.show();} } class CounterFrame extends JFrame { public CounterFrame() { ...

相似回答
大家正在搜