• GUI03 简易计算器、组合+内部类回顾复习


    6、简易计算器、组合+内部类回顾复习

    当前的代码(面向过程)

    public class TestCalc {
        public static void main(String[] args) {
            new Calculator();
        }
    }
    //计算器类
    class Calculator extends Frame{
        public Calculator() {
            //三个文本框
            TextField textField1 = new TextField(10);//字符数
            TextField textField2 = new TextField(10);//字符数
            TextField textField3 = new TextField(20);//字符数
            //一个按钮
            Button button = new Button("=");
            button.addActionListener(new MyCalculatorListener(textField1,textField2,textField3));
            //一个标签
            Label label = new Label("+");
            //布局
            setLayout(new FlowLayout());
            add(textField1);
            add(label);
            add(textField2);
            add(button);
            add(textField3);
            pack();
            setVisible(true);
        }
    }
    //监听器类
    class MyCalculatorListener implements ActionListener{
        private TextField num1,num2,num3;
        public MyCalculatorListener(TextField num1,TextField num2,TextField num3) {
            this.num1 = num1;
            this.num2 = num2;
            this.num3 = num3;
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            //1.获取前两个数
            int n1 =Integer.parseInt(num1.getText());
            int n2 =Integer.parseInt(num2.getText());
            //2.将前面两个数相加放在第三个框
            int n3 = n1 + n2;
            num3.setText(Integer.toString(n3));
            //清除前二个数
            num1.setText("");
            num2.setText("");
        }
    }
    

    组合的方式优化(完全对象化),面向对象:

    public class TestCalc {
        public static void main(String[] args) {
            new Calculator().loadFrame();
        }
    }
    //计算器类
    class Calculator extends Frame{
        public  TextField num1,num2,num3;
        public void loadFrame() {
            //三个文本框
            num1 = new TextField(10);//字符数
            num2 = new TextField(10);//字符数
            num3 = new TextField(20);//字符数
            //一个按钮
            Button button = new Button("=");
            button.addActionListener(new MyCalculatorListener(this));
            //一个标签
            Label label = new Label("+");
            //布局
            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) {
            //1.获取前两个数
            int n1 =Integer.parseInt(calculator.num1.getText());
            int n2 =Integer.parseInt(calculator.num2.getText());
            //2.将前面两个数相加放在第三个框
            int n3 = n1 + n2;
            calculator.num3.setText(Integer.toString(n3));
            //清除前二个数
            calculator.num1.setText("");
            calculator.num2.setText("");
        }
    }
    

    内部类的优化:

    public class TestCalc {
        public static void main(String[] args) {
            new Calculator().loadFrame();
        }
    }
    //计算器类
    class Calculator extends Frame{
        public  TextField num1,num2,num3;
        public void loadFrame() {
            //三个文本框
            num1 = new TextField(10);//字符数
            num2 = new TextField(10);//字符数
            num3 = new TextField(20);//字符数
            //一个按钮
            Button button = new Button("=");
            button.addActionListener(new MyCalculatorListener());
            //一个标签
            Label label = new Label("+");
            //布局
            setLayout(new FlowLayout());
            add(num1);
            add(label);
            add(num2);
            add(button);
            add(num3);
            pack();
            setVisible(true);
        }
        //监听器类
        //内部类最大的好处是可以畅通无阻的访问外部类
        class MyCalculatorListener implements ActionListener{
            public void actionPerformed(ActionEvent e) {
                //1.获取前两个数
                int n1 =Integer.parseInt(num1.getText());
                int n2 =Integer.parseInt(num2.getText());
                //2.将前面两个数相加放在第三个框
                int n3 = n1 + n2;
                num3.setText(Integer.toString(n3));
                //清除前二个数
                num1.setText("");
                num2.setText("");
            }
        }
    }
    
    刚刚参加工作,很有很多不懂不会的,发现错误,欢迎指正,谢谢!
  • 相关阅读:
    Mybatis-generator 逆向工程 自定义PO,xml,mapper,example
    Hadoop3.1.1源码Client详解 : Packet入队后消息系统运作之DataStreamer(Packet发送) : 处理异常
    Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览
    Hadoop3.1.1源码Client详解 : Packet入队后消息系统运作之DataStreamer(Packet发送) : 流水线架设 : 创建块
    Hadoop3.1.1源码Client详解 : Packet入队后消息系统运作之ResponseProcessor(ACK接收)
    Hadoop3.1.1源码Client详解 : Packet入队后消息系统运作之DataStreamer(Packet发送) : 流水线架设 : 流水线恢复/append
    Hadoop3.1.1源码Client详解 : 入队前数据写入
    Hadoop3.1.1源码Client详解 : 写入准备-RPC调用与流的建立
    Hadoop架构: 关于Recovery (Lease Recovery , Block Recovery, PipeLine Recovery)
    Hadoop架构: HDFS中数据块的状态及其切换过程,GS与BGS
  • 原文地址:https://www.cnblogs.com/xd-study/p/12946023.html
Copyright © 2020-2023  润新知