opp原则:组合大于继承!
简易计算器改前:
public class TestCalculator {
public static void main(String[] args) {
new Calculator().lode();
}
}
//计算机类
class Calculator extends Frame{
//属性
TextField num1,num2,num3;
//方法
public void lode(){
num1=new TextField(10);//字符数
num2=new TextField(10);//字符数
num3=new TextField(20);//字符数
Label label=new Label("+");
Button button=new Button("=");
button.addActionListener(new MyCalculatorListener(this));
setLayout(new FlowLayout());
//添加
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
}
}
//监听器
class MyCalculatorListener implements ActionListener{
Calculator calculator=null;
public MyCalculatorListener(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("");
}
}
改后:
public class TestCalculator {
public static void main(String[] args) {
new Calculator().lode();
}
}
//计算机类
class Calculator extends Frame{
//属性
TextField num1,num2,num3;
//方法
public void lode(){
//单行文本域
num1=new TextField(10);//字符数
num2=new TextField(10);//字符数
num3=new TextField(20);//字符数
Label label=new Label("+");
//按钮和监听
Button button=new Button("=");
button.addActionListener(new MyCalculatorListener());
//流式布局
setLayout(new FlowLayout());
//添加组件
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);//显示
shutdown(this);//关闭窗口
}
//监听器 内部类
private class MyCalculatorListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//获取string并转int
int n1=Integer.parseInt(num1.getText());
int n2=Integer.parseInt(num2.getText());
//字符串与结果直接相加
num3.setText(""+(n1+n2));
//清空num1,num2
num1.setText("");
num2.setText("");
}
}
//关闭窗口方法
private static void shutdown(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}