第1个回答 2011-12-29
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Test extends JFrame implements ActionListener {
double op1 = 0.0;
double op2 = 0.0;
StringBuffer str = new StringBuffer();
// 显示信息
JTextField txtInfo;
int preOp, currentOp = 0;// 标准位
boolean isDouble = false;// 是否为实数
// 清除按钮
JButton btnClean;
JButton btnCE = new JButton("CE");
JButton btnNumber7 = new JButton("7");
JButton btnNumber8 = new JButton("8");
JButton btnNumber9 = new JButton("9");
JButton btnNumber4 = new JButton("4");
JButton btnNumber5 = new JButton("5");
JButton btnNumber6 = new JButton("6");
JButton btnNumber1 = new JButton("1");
JButton btnNumber2 = new JButton("2");
JButton btnNumber3 = new JButton("3");
JButton btnNumber0 = new JButton("0");
JButton btnNumberdian = new JButton(".");
JButton btnNumberadd = new JButton("=");
JButton btnNumbersum = new JButton("+");
JButton btnNumbersub = new JButton("-");
JButton btnNumbermul = new JButton("*");
JButton btnNumberdiv = new JButton("/");
public static void main(String[] args) {
Test ts = new Test();
}
public Test() {
this.setTitle("计算器");
this.setSize(280, 320);
this.setLayout(null);
txtInfo = new JTextField("");
txtInfo.setBounds(1, 5, 215, 50);
txtInfo.setHorizontalAlignment(JTextField.RIGHT);
this.add(txtInfo);
btnCE.setBounds(220, 17, 50, 30);
this.add(btnCE);
txtInfo.setEditable(false);
this.getContentPane().add(txtInfo);
// 数字7
btnNumber7.setBounds(1, 80, 50, 20);
this.add(btnNumber7);
// 数字8
btnNumber8.setBounds(55, 80, 50, 20);
this.add(btnNumber8);
// 数字9
btnNumber9.setBounds(109, 80, 50, 20);
this.add(btnNumber9);
// 数字4
btnNumber4.setBounds(1, 120, 50, 20);
this.add(btnNumber4);
// 数字5
btnNumber5.setBounds(55, 120, 50, 20);
this.add(btnNumber5);
// 数字6
btnNumber6.setBounds(109, 120, 50, 20);
this.add(btnNumber6);
// 数字1
btnNumber1.setBounds(1, 160, 50, 20);
this.add(btnNumber1);
// 数字2
btnNumber2.setBounds(55, 160, 50, 20);
this.add(btnNumber2);
// 数字3
btnNumber3.setBounds(109, 160, 50, 20);
this.add(btnNumber3);
// 数字0
btnNumber0.setBounds(1, 200, 50, 20);
this.add(btnNumber0);
// 点
btnNumberdian.setBounds(55, 200, 50, 20);
this.add(btnNumberdian);
// 等于
btnNumberadd.setBounds(109, 200, 50, 20);
this.add(btnNumberadd);
// 加
btnNumbersum.setBounds(180, 197, 60, 25);
this.add(btnNumbersum);
// 减
btnNumbersub.setBounds(180, 157, 60, 25);
this.add(btnNumbersub);
// 乘
btnNumbermul.setBounds(180, 117, 60, 25);
this.add(btnNumbermul);
// 除
btnNumberdiv.setBounds(180, 77, 60, 25);
this.add(btnNumberdiv);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btnNumber0.addActionListener(this);
btnNumber1.addActionListener(this);
btnNumber2.addActionListener(this);
btnNumber3.addActionListener(this);
btnNumber4.addActionListener(this);
btnNumber5.addActionListener(this);
btnNumber6.addActionListener(this);
btnNumber7.addActionListener(this);
btnNumber8.addActionListener(this);
btnNumber9.addActionListener(this);
btnNumberdian.addActionListener(this);
btnNumberadd.addActionListener(this);
btnNumbersum.addActionListener(this);
btnNumbersub.addActionListener(this);
btnNumbermul.addActionListener(this);
btnNumberdiv.addActionListener(this);
btnCE.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand();
// 判断点击的是什么按钮
if (s.equals("BackSpace")) {
if (!txtInfo.getText().trim().equals("0.")) {
// 如果文本框中有内容
if (str.length() != 1 && str.length() != 0) {
txtInfo.setText(str.delete(str.length() - 1,
str.length()).toString());
} else {
txtInfo.setText("0.");
str.setLength(2);
}
}
op2 = Double.parseDouble(txtInfo.getText().trim());
} else if (s.equals("CE")) {
// 如果是CE删除当前计算
txtInfo.setText("0.");
op1 = op2 = 0;
str.replace(0, str.length(), " ");
preOp = currentOp = 0;
} else if (s.equals("+")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 1;
op2 = 0;
txtInfo.setText("" + op1);
} else {
currentOp = preOp;
preOp = 1;
switch (currentOp) {
case 1:
op1 += op2;
txtInfo.setText("" + op1);
break;
case 2:
op1 -= op2;
txtInfo.setText("" + op1);
break;
case 3:
op1 *= op2;
txtInfo.setText("" + op1);
break;
case 4:
op1 /= op2;
txtInfo.setText("" + op1);
break;
}
}
} else if (s.equals("-")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 2;// op1=op2;op2=0;
txtInfo.setText("" + op1);
} else {
currentOp = preOp;
preOp = 2;
switch (currentOp) {
case 1:
op1 = op1 + op2;
txtInfo.setText("" + op1);
break;
case 2:
op1 = op1 - op2;
txtInfo.setText("" + op1);
break;
case 3:
op1 = op1 * op2;
txtInfo.setText("" + op1);
break;
case 4:
op1 = op1 / op2;
txtInfo.setText("" + op1);
break;
}
}
} else if (s.equals("*")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 3;// op1=op2;op2=1;
txtInfo.setText("" + op1);// op1=op2;
} else {
currentOp = preOp;
preOp = 3;
switch (currentOp) {
case 1:
op1 = op1 + op2;
txtInfo.setText("" + op1);
break;
case 2:
op1 = op1 - op2;
txtInfo.setText("" + op1);
break;
case 3:
op1 = op1 * op2;
txtInfo.setText("" + op1);
break;
case 4:
op1 = op1 / op2;
txtInfo.setText("" + op1);
break;
}
}
} else if (s.equals("/")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 4;// op2=1;
txtInfo.setText("" + op1);// op1=op2;
} else {
currentOp = preOp;
preOp = 4;
switch (currentOp) {
case 1:
op1 = op1 + op2;
txtInfo.setText("" + op1);
break;
case 2:
op1 = op1 - op2;
txtInfo.setText("" + op1);
break;
case 3:
op1 = op1 * op2;
txtInfo.setText("" + op1);
break;
case 4:
op1 = op1 / op2;
txtInfo.setText("" + op1);
break;
}
}
} else if (s.equals("=")) {
if (currentOp == 0) {
str.setLength(0);
txtInfo.setText("" + op2);
} else {
str.setLength(0);
currentOp = preOp;
switch (currentOp) {
case 1:
op1 = op1 + op2;
txtInfo.setText("" + op1);
break;
case 2:
op1 = op1 - op2;
txtInfo.setText("" + op1);
break;
case 3:
op1 = op1 * op2;
txtInfo.setText("" + op1);
break;
case 4:
op1 = op1 / op2;
txtInfo.setText("" + op1);
break;
}
currentOp = 0;
op2 = 0;
}
} else if (s.equals(".")) {
isDouble = true;
if (txtInfo.getText().trim().indexOf('.') != -1)
;
else {
if (txtInfo.getText().trim().equals("0")) {
str.setLength(0);
txtInfo.setText((str.append("0" + s)).toString());
}
else {
txtInfo.setText((str.append(s)).toString());
}
}
} else if (s.equals("0")) {
if (txtInfo.getText().trim().equals("0.")) {
} else {
txtInfo.setText(str.append(s).toString());
op2 = Double.parseDouble(txtInfo.getText().trim());
}
} else {
txtInfo.setText(str.append(s).toString());
op2 = Double.parseDouble(txtInfo.getText().trim());
if (currentOp == 0)
op1 = op2;
}
}
}
第2个回答 2011-12-29
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Test extends JFrame implements ActionListener {
double op1 = 0.0;
double op2 = 0.0;
StringBuffer str = new StringBuffer();
// 显示信息
JTextField txtInfo;
int preOp, currentOp = 0;// 标准位
boolean isDouble = false;// 是否为实数
// 清除按钮
JButton btnClean;
JButton btnCE = new JButton("CE");
JButton btnNumber7 = new JButton("7");
JButton btnNumber8 = new JButton("8");
JButton btnNumber9 = new JButton("9");
JButton btnNumber4 = new JButton("4");
JButton btnNumber5 = new JButton("5");
JButton btnNumber6 = new JButton("6");
JButton btnNumber1 = new JButton("1");
JButton btnNumber2 = new JButton("2");
JButton btnNumber3 = new JButton("3");
JButton btnNumber0 = new JButton("0");
JButton btnNumberdian = new JButton(".");
JButton btnNumberadd = new JButton("=");
JButton btnNumbersum = new JButton("+");
JButton btnNumbersub = new JButton("-");
JButton btnNumbermul = new JButton("*");
JButton btnNumberdiv = new JButton("/");
public static void main(String[] args) {
Test ts = new Test();
}
public Test() {
this.setTitle("计算器");
this.setSize(280, 320);
this.setLayout(null);
txtInfo = new JTextField("");
txtInfo.setBounds(1, 5, 215, 50);
txtInfo.setHorizontalAlignment(JTextField.RIGHT);
this.add(txtInfo);
btnCE.setBounds(220, 17, 50, 30);
this.add(btnCE);
txtInfo.setEditable(false);
this.getContentPane().add(txtInfo);
// 数字7
btnNumber7.setBounds(1, 80, 50, 20);
this.add(btnNumber7);
// 数字8
btnNumber8.setBounds(55, 80, 50, 20);
this.add(btnNumber8);
// 数字9
btnNumber9.setBounds(109, 80, 50, 20);
this.add(btnNumber9);
// 数字4
btnNumber4.setBounds(1, 120, 50, 20);
this.add(btnNumber4);
// 数字5
btnNumber5.setBounds(55, 120, 50, 20);
this.add(btnNumber5);
// 数字6
btnNumber6.setBounds(109, 120, 50, 20);
this.add(btnNumber6);
// 数字1
btnNumber1.setBounds(1, 160, 50, 20);
this.add(btnNumber1);
// 数字2
btnNumber2.setBounds(55, 160, 50, 20);
this.add(btnNumber2);
// 数字3
btnNumber3.setBounds(109, 160, 50, 20);
this.add(btnNumber3);
// 数字0
btnNumber0.setBounds(1, 200, 50, 20);
this.add(btnNumber0);
// 点
btnNumberdian.setBounds(55, 200, 50, 20);
this.add(btnNumberdian);
// 等于
btnNumberadd.setBounds(109, 200, 50, 20);
this.add(btnNumberadd);
// 加
btnNumbersum.setBounds(180, 197, 60, 25);
this.add(btnNumbersum);
// 减
btnNumbersub.setBounds(180, 157, 60, 25);
this.add(btnNumbersub);
// 乘
btnNumbermul.setBounds(180, 117, 60, 25);
this.add(btnNumbermul);
// 除
btnNumberdiv.setBounds(180, 77, 60, 25);
this.add(btnNumberdiv);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btnNumber0.addActionListener(this);
btnNumber1.addActionListener(this);
btnNumber2.addActionListener(this);
btnNumber3.addActionListener(this);
btnNumber4.addActionListener(this);
btnNumber5.addActionListener(this);
btnNumber6.addActionListener(this);
btnNumber7.addActionListener(this);
btnNumber8.addActionListener(this);
btnNumber9.addActionListener(this);
btnNumberdian.addActionListener(this);
btnNumberadd.addActionListener(this);
btnNumbersum.addActionListener(this);
btnNumbersub.addActionListener(this);
btnNumbermul.addActionListener(this);
btnNumberdiv.addActionListener(this);
btnCE.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand();
// 判断点击的是什么按钮
if (s.equals("BackSpace")) {
if (!txtInfo.getText().trim().equals("0.")) {
// 如果文本框中有内容
if (str.length() != 1 && str.length() != 0) {
txtInfo.setText(str.delete(str.length() - 1,
str.length()).toString());
} else {
txtInfo.setText("0.");
str.setLength(2);
}
}
op2 = Double.parseDouble(txtInfo.getText().trim());
} else if (s.equals("CE")) {
// 如果是CE删除当前计算
txtInfo.setText("0.");
op1 = op2 = 0;
str.replace(0, str.length(), " ");
preOp = currentOp = 0;
} else if (s.equals("+")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 1;
op2 = 0;
txtInfo.setText("" + op1);
} else {
currentOp = preOp;
preOp = 1;
switch (currentOp) {
case 1:
op1 += op2;
txtInfo.setText("" + op1);
break;
case 2:
op1 -= op2;
txtInfo.setText("" + op1);
break;
case 3:
op1 *= op2;
txtInfo.setText("" + op1);
break;
case 4:
op1 /= op2;
txtInfo.setText("" + op1);
break;
}
}
} else if (s.equals("-")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 2;// op1=op2;op2=0;
txtInfo.setText("" + op1);
} else {
currentOp = preOp;
preOp = 2;
switch (currentOp) {
case 1:
op1 = op1 + op2;
txtInfo.setText("" + op1);
break;
case 2:
op1 = op1 - op2;
txtInfo.setText("" + op1);
break;
case 3:
op1 = op1 * op2;
txtInfo.setText("" + op1);
break;
case 4:
op1 = op1 / op2;
txtInfo.setText("" + op1);
break;
}
}
} else if (s.equals("*")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 3;// op1=op2;op2=1;
txtInfo.setText("" + op1);// op1=op2;
} else {
currentOp = preOp;
preOp = 3;
switch (currentOp) {
case 1:
op1 = op1 + op2;
txtInfo.setText("" + op1);
break;
case 2:
op1 = op1 - op2;
txtInfo.setText("" + op1);
break;
case 3:
op1 = op1 * op2;
txtInfo.setText("" + op1);
break;
case 4:
op1 = op1 / op2;
txtInfo.setText("" + op1);
break;
}
}
} else if (s.equals("/")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 4;// op2=1;
txtInfo.setText("" + op1);// op1=op2;
} else {
currentOp = preOp;
preOp = 4;
switch (currentOp) {
case 1:
op1 = op1 + op2;
txtInfo.setText("" + op1);
break;
case 2:
op1 = op1 - op2;
txtInfo.setText("" + op1);
break;
case 3:
op1 = op1 * op2;
txtInfo.setText("" + op1);
break;
case 4:
op1 = op1 / op2;
txtInfo.setText("" + op1);
break;
}
}
} else if (s.equals("=")) {
if (currentOp == 0) {
str.setLength(0);
txtInfo.setText("" + op2);
} else {
str.setLength(0);
currentOp = preOp;
switch (currentOp) {
case 1:
op1 = op1 + op2;
txtInfo.setText("" + op1);
break;
case 2:
op1 = op1 - op2;
txtInfo.setText("" + op1);
break;
case 3:
op1 = op1 * op2;
txtInfo.setText("" + op1);
break;
case 4:
op1 = op1 / op2;
txtInfo.setText("" + op1);
break;
}
currentOp = 0;
op2 = 0;
}
} else if (s.equals(".")) {
isDouble = true;
if (txtInfo.getText().trim().indexOf('.') != -1)
;
else {
if (txtInfo.getText().trim().equals("0")) {
str.setLength(0);
txtInfo.setText((str.append("0" + s)).toString());
}
else {
txtInfo.setText((str.append(s)).toString());
}
}
} else if (s.equals("0")) {
if (txtInfo.getText().trim().equals("0.")) {
} else {
txtInfo.setText(str.append(s).toString());
op2 = Double.parseDouble(txtInfo.getText().trim());
}
} else {
txtInfo.setText(str.append(s).toString());
op2 = Double.parseDouble(txtInfo.getText().trim());
if (currentOp == 0)
op1 = op2;
}
}
}
第3个回答 2012-01-09
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import java.io.* ;
import javax.swing.*;
import java.util.Vector;
// 定义监听窗口
public class killf本回答被网友采纳