简易计算器
- 首先我们需要创建一个窗口
- 用三个文本框承载加法的输入
- 用一个标签实现加法符号
- 用一个按钮实现监听,并且按钮的名字为“=”
- 令布局格式为流式布局
下面是实现方式
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TesCalc {
public static void main(String[] args) {
new Calculator();
}
}
//创建一个计算器的类
class Calculator extends Frame{
public Calculator() {
TextField num1 = new TextField(10);
TextField num2 = new TextField(10);
TextField num3 = new TextField(20);
Button button = new Button("=");
button.addActionListener(new MyCalculatorListeioner(num1,num2,num3));
Label label = new Label("+");
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
}
}
//创建一个监听类
class MyCalculatorListeioner implements ActionListener{
private TextField num1,num2,num3;
public MyCalculatorListeioner(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("");
}
}
代码思路就是,创造一个计算器的类,在类中实现窗口的创建,布局,以及按钮和标签的添加。并且给按钮添加一个监听。
再创建一个监听类,在监听类中获取三个输入,并且对三个输入进行处理转化成整形,然后相加,在最后把两个加数清零。
对代码进行优化 转化为面向对象的思维
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TesCalc {
public static void main(String[] args) {
new Calculator().loadFrame();
}
}
//创建一个计算器的类
class Calculator extends Frame{
TextField num1,num2,num3;
public Frame loadFrame(){
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(20);
Button button = new Button("=");
button.addActionListener(new MyCalculatorListeioner(this));
Label label = new Label("+");
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
return null;
}
}
//创建一个监听类
class MyCalculatorListeioner implements ActionListener{
Calculator calculator = null;
public MyCalculatorListeioner(Calculator calculator) {
this.calculator=calculator;
}
@Override
public void actionPerformed(ActionEvent e) {
int n1 = Integer.parseInt(calculator.num1.getText());
int n2 = Integer.parseInt(calculator.num2.getText());
calculator.num3.setText(""+(n1+n2));
calculator.num1.setText("");
calculator.num2.setText("");
}
}
对代码的优化体现在,把原来的构造器替换成了一个Frame类型的方法,并且把三个文本变量变成了类中的属性。这就是一个标准的面向对象的格式。
在监听类中的参数的直接就是Calcultor的类,对他进行处理,简化了代码。
利用内部类进行优化
在代码中最应该使用的就是内部类,因为内部类可以畅通无阻的调用外部类。很好的简化了代码。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TesCalc {
public static void main(String[] args) {
new Calculator().loadFrame();
}
}
//创建一个计算器的类
class Calculator extends Frame{
TextField num1,num2,num3;
public Frame loadFrame(){
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(20);
Button button = new Button("=");
button.addActionListener(new MyCalculatorListeioner());
Label label = new Label("+");
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
return null;
}
//内部类,最大的好处就是可以畅通无阻的访问外部类
private class MyCalculatorListeioner 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("");
}
}
}
因为内部类可以畅通无阻地调用外部类,所以可以直接进行使用,在代码思维上也是很简便的。
运行结果如上
写在最后
时间是最公平的东西