简易计算器
①面向过程方法
源代码:
package cn.ecut.awt.event;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestCalculator {
public static void main(String[] args) {
new MyCalculator();
}
}
//计算器类
class MyCalculator extends Frame{
public MyCalculator(){
//三个文本框
TextField num1=new TextField(10);
TextField num2=new TextField(10);
TextField num3=new TextField(20);
//一个标签
Label label=new Label("+");
//一个按钮
Button button=new Button("=");
setVisible(true);
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
MyCalculatorListenner myCalculatorListenner=new MyCalculatorListenner(num1,num2,num3);
button.addActionListener(myCalculatorListenner);
}
}
//监听类
//面向过程方法
class MyCalculatorListenner implements ActionListener{
private TextField num1,num2,num3;
public MyCalculatorListenner(TextField num1,TextField num2,TextField num3){
this.num1=num1;
this.num2=num2;
this.num3=num3;
}
@Override
public void actionPerformed(ActionEvent e) {
//获得加数和被加数
int n1=Integer.parseInt(num1.getText());
int n2=Integer.parseInt(num2.getText());
//将得到的值放到第三个框
num3.setText(""+(n1+n2));
//清除前两个框
num1.setText("");
num2.setText("");
}
}
②采用组合方法
源代码:
package cn.ecut.awt.event;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestCalculator2 {
public static void main(String[] args) {
new MyCalculator2().loadFrame();
}
}
//计算器类
class MyCalculator2 extends Frame {
//属性
TextField num1, num2, num3;
Label label;
Button button;
//方法
public void loadFrame() {
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(20);
label = new Label("+");
button = new Button("=");
//添加监听事件
button.addActionListener(new MyCalculatorListenner2(this));
//布局
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
}
}
//监听类
//采用组合方法
class MyCalculatorListenner2 implements ActionListener {
//获取计算器这个对象,在另一个类中组合另外一个类
MyCalculator2 myCalculator2 = null;
public MyCalculatorListenner2(MyCalculator2 myCalculator2) {
this.myCalculator2 = myCalculator2;
}
@Override
public void actionPerformed(ActionEvent e) {
//获得加数和被加数
int n1 = Integer.parseInt(myCalculator2.num1.getText());
int n2 = Integer.parseInt(myCalculator2.num2.getText());
//将得到的值放到第三个框
myCalculator2.num3.setText("" + (n1 + n2));
//清除前两个框
myCalculator2.num1.setText("");
myCalculator2.num2.setText("");
}
}
③采用内部类方法
源代码:
package cn.ecut.awt.event;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestCalculator3 {
public static void main(String[] args) {
new MyCalculator2().loadFrame();
}
}
//计算器类
class MyCalculator3 extends Frame {
//属性
TextField num1, num2, num3;
Label label;
Button button;
//方法
public void loadFrame() {
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(20);
label = new Label("+");
button = new Button("=");
//添加监听事件
button.addActionListener(new MyCalculatorListenner3());
//布局
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
}
//监听类
//内部类最大的好处就是可以畅通无阻的访问外部的属性和方法!
private class MyCalculatorListenner3 implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//获得加数和被加数
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
//将得到的值放到第三个框
num3.setText("" + (n1 + n2));
//清除前两个框
num1.setText("");
num2.setText("");
}
}
}
运行结果: