内部类(简易计算器练习)

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);
            }
        });


    }

}


 

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值