import javax.swing.*;
import java.awt.event.*;
public class Calculator extends JFrame {
// 定义所有按钮
JButton J0, J1, J2, J3, J4, J5, J6, J7, J8, J9, Jdian, Jadd, Jjian, Jcheng,
Jchu, Jdeng, JC, Sqrt, Backspace, Jsum;
// 定义文本框
JTextField JTField1;
String Temp1;// 存放前一个数
Double Temp2;// 存放结果
int n;// 判断使用哪种运算符
int count = 1;// 判断是否按过加减乘除,以便按运算符号的时候屏幕正确显示
int x = 1;// 判断小数点是否被按过
Double j;
// 构造函数,初始化变量
public Calculator() {
// 设置此计算器初始位置(绝对)和计算器版面大小
this.setBounds(312, 200, 308, 245);
// 设置此计算器点击关闭按钮后可以彻底关闭
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 初始化文本框和所有按钮
J0 = new JButton("0");
J1 = new JButton("1");
J2 = new JButton("2");
J3 = new JButton("3");
J4 = new JButton("4");
J5 = new JButton("5");
J6 = new JButton("6");
J7 = new JButton("7");
J8 = new JButton("8");
J9 = new JButton("9");
Jdian = new JButton(".");
Jadd = new JButton("+");
Jjian = new JButton("-");
Jcheng = new JButton("*");
Jchu = new JButton("/");
Jdeng = new JButton("=");
JC = new JButton("复位");
Sqrt = new JButton("Sqrt");
Backspace = new JButton("删除");
JTField1 = new JTextField(10);
Jsum = new JButton("计算");
// 得到一个面板,定义该面板排版方式为空
getContentPane().setLayout(null);
// 定义文本框和所有按钮的位置(绝对)和大小
JTField1.setBounds(10, 10, 196, 30);// button.setBounds(横坐标,纵坐标,长,宽)
Jsum.setBounds(220, 10, 70, 30);
J0.setBounds(10, 60, 45, 30);
J1.setBounds(60, 60, 45, 30);
J2.setBounds(110, 60, 45, 30);
Jadd.setBounds(160, 60, 45, 30);
J3.setBounds(10, 100, 45, 30);
J4.setBounds(60, 100, 45, 30);
J5.setBounds(110, 100, 45, 30);
Jjian.setBounds(160, 100, 45, 30);
J6.setBounds(10, 140, 45, 30);
J7.setBounds(60, 140, 45, 30);
J8.setBounds(110, 140, 45, 30);
Jcheng.setBounds(160, 140, 45, 30);
J9.setBounds(10, 180, 45, 30);
Jdian.setBounds(60, 180, 45, 30);
Jdeng.setBounds(110, 180, 45, 30);
Jchu.setBounds(160, 180, 45, 30);
JC.setBounds(220, 60, 70, 38);
Sqrt.setBounds(220, 116, 70, 38);
Backspace.setBounds(220, 172, 70, 38);
// 将所有按钮和文本框加入当前面板
getContentPane().add(J0);
getContentPane().add(J1);
getContentPane().add(J2);
getContentPane().add(J3);
getContentPane().add(J4);
getContentPane().add(J5);
getContentPane().add(J6);
getContentPane().add(J7);
getContentPane().add(J8);
getContentPane().add(J9);
getContentPane().add(Jdian);
getContentPane().add(Jadd);
getContentPane().add(Jjian);
getContentPane().add(Jcheng);
getContentPane().add(Jchu);
getContentPane().add(Jdeng);
getContentPane().add(JC);
getContentPane().add(Sqrt);
getContentPane().add(Backspace);
getContentPane().add(JTField1);
getContentPane().add(Jsum);
//给所有按钮添加监听器
J0.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//当鼠标点击0的时候,如果count的值是1的话,说明文本框中已经有值,0加在原有的数后边
if (count == 1)
JTField1.setText(JTField1.getText() + "0");
//反之显示0
else
JTField1.setText("0");
count = 1;
}
});
J1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (count == 1)
JTField1.setText(JTField1.getText() + "1");
else
JTField1.setText("1");
count = 1;
}
});
J2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (count == 1)
JTField1.setText(JTField1.getText() + "2");
else
JTField1.setText("2");
count = 1;
}
});
J3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (count == 1)
JTField1.setText(JTField1.getText() + "3");
else
JTField1.setText("3");
count = 1;
}
});
J4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (count == 1)
JTField1.setText(JTField1.getText() + "4");
else
JTField1.setText("4");
count = 1;
}
});
J5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (count == 1)
JTField1.setText(JTField1.getText() + "5");
else
JTField1.setText("5");
count = 1;
}
});
J6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (count == 1)
JTField1.setText(JTField1.getText() + "6");
else
JTField1.setText("6");
count = 1;
}
});
J7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (count == 1)
JTField1.setText(JTField1.getText() + "7");
else
JTField1.setText("7");
count = 1;
}
});
J8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (count == 1)
JTField1.setText(JTField1.getText() + "8");
else
JTField1.setText("8");
count = 1;
}
});
J9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (count == 1)
JTField1.setText(JTField1.getText() + "9");
else
JTField1.setText("9");
count = 1;
}
});
Jdian.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (x == 1)
JTField1.setText(JTField1.getText() + ".");
x = 0;// 取消小数点的使用
count = 1;
}
});
Jadd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
count = 0;
x = 1;// 恢复小数点的使用
n = 1;
Temp1 = JTField1.getText();
}
});
Jjian.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
count = 0;
x = 1;// 恢复小数点的使用
n = 2;
Temp1 = JTField1.getText();
}
});
Jcheng.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
count = 0;
x = 1;// 恢复小数点的使用
n = 3;
Temp1 = JTField1.getText();
}
});
Jchu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
count = 0;
x = 1;// 恢复小数点的使用
n = 4;
Temp1 = JTField1.getText();
}
});
//根据n的值判断运算符
Jdeng.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int s = JTField1.getText().length();
if (s > 0) {
switch (n) {
case 1:
Temp2 = Double.parseDouble(Temp1)
+ Double.parseDouble(JTField1.getText());
break;
case 2:
Temp2 = Double.parseDouble(Temp1)
- Double.parseDouble(JTField1.getText());
break;
case 3:
Temp2 = Double.parseDouble(Temp1)
* Double.parseDouble(JTField1.getText());
break;
case 4:
//判断除数是否为零,不为零进入
if(Double.parseDouble(JTField1.getText())!=0) {
Temp2 = Double.parseDouble(Temp1)
/ Double.parseDouble(JTField1.getText());
}
//如果除数为零,弹出一个警告框
else {
JOptionPane.showMessageDialog(null, new String("除数不能为0,请重新输入"));
}
break;
}
JTField1.setText(Temp2 + "");
}
//如果计算完毕输入的是数字,则清空文本框
count = 0;
}
});
Jsum.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int s = JTField1.getText().length();
if (s > 0) {
switch (n) {
case 1:
Temp2 = Double.parseDouble(Temp1)
+ Double.parseDouble(JTField1.getText());
break;
case 2:
Temp2 = Double.parseDouble(Temp1)
- Double.parseDouble(JTField1.getText());
break;
case 3:
评论0