zoukankan      html  css  js  c++  java
  • 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("");
            }
        }
    }
    
    刚刚参加工作,很有很多不懂不会的,发现错误,欢迎指正,谢谢!
  • 相关阅读:
    Swift _ OC _ 混编
    CoreAnimation 寄宿图
    CoreAnimation 开篇
    iOS 杂笔-26(苹果禁用热更新)
    Swift_TableView(delegate,dataSource,prefetchDataSource 详解)
    Swift_ScrollView _ API详解
    插入排序_c++
    选择排序_c++
    冒泡排序_c++
    Swift_协议
  • 原文地址:https://www.cnblogs.com/xd-study/p/12946023.html
Copyright © 2011-2022 走看看