//计算器,Eclipse中编译通过import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class testZ extends JFrame implements ActionListener {
private JPanel jPanel1,jPanel2;
private JTextField resultField;
private JButton s1,s2,s3,s4,s5,s6,s7,s8,s9,s0,
b1,b2,b3,b4,
f1,f2;
private boolean end,add,sub,mul,div;
private String str;
private double num1,num2;
//构造方法
public testZ() {
super("计算器");
setSize(200,200);
setLocation(500, 250);
Container con=getContentPane();
con.setLayout(new BorderLayout());
jPanel1=new JPanel();
jPanel1.setLayout(new GridLayout(1,1));
jPanel2=new JPanel();
jPanel2.setLayout(new GridLayout(4,4));
resultField=new JTextField("0");
jPanel1.add(resultField);
con.add(jPanel1,BorderLayout.NORTH);
s1=new JButton("1"); s1.addActionListener(this);
s2=new JButton("2"); s2.addActionListener(this);
s3=new JButton("3"); s3.addActionListener(this);
s4=new JButton("4"); s4.addActionListener(this);
s5=new JButton("5"); s5.addActionListener(this);
s6=new JButton("6"); s6.addActionListener(this);
s7=new JButton("7"); s7.addActionListener(this);
s8=new JButton("8"); s8.addActionListener(this);
s9=new JButton("9"); s9.addActionListener(this);
s0=new JButton("0"); s0.addActionListener(this);
b1=new JButton("+"); b1.addActionListener(this);
b2=new JButton("-"); b2.addActionListener(this);
b3=new JButton("*"); b3.addActionListener(this);
b4=new JButton("/"); b4.addActionListener(this);
f1=new JButton("."); f1.addActionListener(this);
f2=new JButton("="); f2.addActionListener(this);
jPanel2.add(s1);
jPanel2.add(s2);
jPanel2.add(s3);
jPanel2.add(b1);
jPanel2.add(s4);
jPanel2.add(s5);
jPanel2.add(s6);
jPanel2.add(b2);
jPanel2.add(s7);
jPanel2.add(s8);
jPanel2.add(s9);
jPanel2.add(b3);
jPanel2.add(s0);
jPanel2.add(f1);
jPanel2.add(f2);
jPanel2.add(b4);
con.add(jPanel2,BorderLayout.CENTER);
}
//num method
public void num(int i) {
String s = null;
s=String.valueOf(i);
if(end) {
//如果数字输入结束,则将文本框置零,重新输入
resultField.setText("0");
end=false;
}
if((resultField.getText()).equals("0")) {
//如果文本框的内容为零,则覆盖文本框的内容
resultField.setText(s);
} else {
//如果文本框的内容不为零,则在内容后面添加数字
str = resultField.getText() + s;
resultField.setText(str);
}
}
//sign method
public void sign(int s) {
if(s==1) {
add=true;
sub=false;
mul=false;
div=false;
} else if(s==2) {
add=false;
sub=true;
mul=false;
div=false;
} else if(s==3) {
add=false;
sub=false;
mul=true;
div=false;
} else if(s==4) {
add=false;
sub=false;
mul=false;
div=true;
}
num1=Double.parseDouble(resultField.getText());
end=true;
}
public void actionPerformed(ActionEvent e) {
//数字事件
if(e.getSource()==s1) {
num(1);
}
else if(e.getSource()==s2) num(2);
else if(e.getSource()==s3) num(3);
else if(e.getSource()==s4) num(4);
else if(e.getSource()==s5) num(5);
else if(e.getSource()==s6) num(6);
else if(e.getSource()==s7) num(7);
else if(e.getSource()==s8) num(8);
else if(e.getSource()==s9) num(9);
else if(e.getSource()==s0) num(0);
//符号事件
else if(e.getSource()==b1) sign(1);
else if(e.getSource()==b2) sign(2);
else if(e.getSource()==b3) sign(3);
else if(e.getSource()==b4) sign(4);
//等号
else if(e.getSource()==f1) {
str=resultField.getText();
if(str.indexOf(".")<=1) {
str+=".";
resultField.setText(str);
}
}
else if(e.getSource()==f2) {
num2=Double.parseDouble(resultField.getText());
if(add) {
num1=num1 + num2;
} else if(sub) {
num1=num1 - num2;
} else if(mul) {
num1=num1 * num2;
} else if(div) {
num1=num1 / num2;
}
resultField.setText(String.valueOf(num1));
end=true;
}
}
public static void main(String[] args) {
testZ th1=new testZ();
th1.setVisible(true);
}
}
解决方案 »
- 为什么我的JBuilder当使用集合的时候总是提示错误
- 经典推荐大放送
- 小弟刚刚接触JAVA,请老鸟朋友告诉JAVA的学习顺序及重点
- 有个难题请教高手?急
- 在一个 JDesktopPane 中加入一个 JInternalFrame 如何让它初始化时最大化,并且选定,在最前面?
- mina框架发送数据问题
- java调用com串口时报错
- 请教一个问题,如何加载Java虚拟机?
- 紧急求救!!!大侠帮忙!!!
- ------------关于TCP滑动窗口的演示 急!!!-------
- 在Jtable中如何实时显示数据库中的数据?
- 菜鸟提问:Hello world程序在eclipse下能正确的运行但是在DOS下就是总出错,
//计算器,已经编译通过import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class testZ extends JFrame implements ActionListener {
private JPanel jPanel1,jPanel2;
private JTextField resultField;
private JButton s1,s2,s3,s4,s5,s6,s7,s8,s9,s0,
b1,b2,b3,b4,
f1,f2;
private boolean end,add,sub,mul,div;
private String str;
private double num1,num2;
//构造方法
public testZ() {
super("计算器");
setSize(200,200);
setLocation(500, 250);
Container con=getContentPane();
con.setLayout(new BorderLayout());
jPanel1=new JPanel();
jPanel1.setLayout(new GridLayout(1,1));
jPanel2=new JPanel();
jPanel2.setLayout(new GridLayout(4,4));
resultField=new JTextField("0");
jPanel1.add(resultField);
con.add(jPanel1,BorderLayout.NORTH);
s1=new JButton("1"); s1.addActionListener(this);
s2=new JButton("2"); s2.addActionListener(this);
s3=new JButton("3"); s3.addActionListener(this);
s4=new JButton("4"); s4.addActionListener(this);
s5=new JButton("5"); s5.addActionListener(this);
s6=new JButton("6"); s6.addActionListener(this);
s7=new JButton("7"); s7.addActionListener(this);
s8=new JButton("8"); s8.addActionListener(this);
s9=new JButton("9"); s9.addActionListener(this);
s0=new JButton("0"); s0.addActionListener(this);
b1=new JButton("+"); b1.addActionListener(this);
b2=new JButton("-"); b2.addActionListener(this);
b3=new JButton("*"); b3.addActionListener(this);
b4=new JButton("/"); b4.addActionListener(this);
f1=new JButton("."); f1.addActionListener(this);
f2=new JButton("="); f2.addActionListener(this);
jPanel2.add(s1);
jPanel2.add(s2);
jPanel2.add(s3);
jPanel2.add(b1);
jPanel2.add(s4);
jPanel2.add(s5);
jPanel2.add(s6);
jPanel2.add(b2);
jPanel2.add(s7);
jPanel2.add(s8);
jPanel2.add(s9);
jPanel2.add(b3);
jPanel2.add(s0);
jPanel2.add(f1);
jPanel2.add(f2);
jPanel2.add(b4);
con.add(jPanel2,BorderLayout.CENTER);
}
//num method
public void num(int i) {
String s = null;
s=String.valueOf(i);
if(end) {
//如果数字输入结束,则将文本框置零,重新输入
resultField.setText("0");
end=false;
}
if((resultField.getText()).equals("0")) {
//如果文本框的内容为零,则覆盖文本框的内容
resultField.setText(s);
} else {
//如果文本框的内容不为零,则在内容后面添加数字
str = resultField.getText() + s;
resultField.setText(str);
}
}
//sign method
public void sign(int s) {
if(s==1) {
add=true;
sub=false;
mul=false;
div=false;
} else if(s==2) {
add=false;
sub=true;
mul=false;
div=false;
} else if(s==3) {
add=false;
sub=false;
mul=true;
div=false;
} else if(s==4) {
add=false;
sub=false;
mul=false;
div=true;
}
num1=Double.parseDouble(resultField.getText());
end=true;
}
public void actionPerformed(ActionEvent e) {
//数字事件
if(e.getSource()==s1) {
num(1);
}
else if(e.getSource()==s2) num(2);
else if(e.getSource()==s3) num(3);
else if(e.getSource()==s4) num(4);
else if(e.getSource()==s5) num(5);
else if(e.getSource()==s6) num(6);
else if(e.getSource()==s7) num(7);
else if(e.getSource()==s8) num(8);
else if(e.getSource()==s9) num(9);
else if(e.getSource()==s0) num(0);
//符号事件
else if(e.getSource()==b1) sign(1);
else if(e.getSource()==b2) sign(2);
else if(e.getSource()==b3) sign(3);
else if(e.getSource()==b4) sign(4);
//等号
else if(e.getSource()==f1) {
str=resultField.getText();
if(str.indexOf(".")<=1) {
str+=".";
resultField.setText(str);
}
}
else if(e.getSource()==f2) {
num2=Double.parseDouble(resultField.getText());
if(add) {
num1=num1 + num2;
} else if(sub) {
num1=num1 - num2;
} else if(mul) {
num1=num1 * num2;
} else if(div) {
num1=num1 / num2;
}
resultField.setText(String.valueOf(num1));
end=true;
}
}
public static void main(String[] args) {
testZ th1=new testZ();
th1.setVisible(true);
}
}
s1=new JButton("1"); s1.addActionListener(this);
s2=new JButton("2"); s2.addActionListener(this);
s3=new JButton("3"); s3.addActionListener(this);
s4=new JButton("4"); s4.addActionListener(this);
s5=new JButton("5"); s5.addActionListener(this);
s6=new JButton("6"); s6.addActionListener(this);
s7=new JButton("7"); s7.addActionListener(this);
s8=new JButton("8"); s8.addActionListener(this);
s9=new JButton("9"); s9.addActionListener(this);
s0=new JButton("0"); s0.addActionListener(this);
b1=new JButton("+"); b1.addActionListener(this);
b2=new JButton("-"); b2.addActionListener(this);
b3=new JButton("*"); b3.addActionListener(this);
b4=new JButton("/"); b4.addActionListener(this);
f1=new JButton("."); f1.addActionListener(this);
f2=new JButton("="); f2.addActionListener(this);
这个是注册所有时间的监听
对于ActionPerformed(e)这个函数来监听时间,根据e.getResource()来判断是哪个地方触发的时间,分为符号,数字,和等号,再进行相关的处理。
你实现了ActionListener(事件监听器)
例如:s1.addActionListener(this);调用了点击事件addActionListener(this)这里不传了this,点击一次就调用actionPerformed()方法,this意思就是调用本类事件方法
public void actionPerformed(ActionEvent e) {
}在这个方法里加一个System.out.println("进入了actionPerformed()");