GUI编程核心技术AWT——写一个简易计算器
面向过程的思想
package com.wei.work;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//写一个简易计算器public class Work02 {public static void main(String[] args) {Calaulator calaulator = new Calaulator();}}//建一个计算器类class Calaulator extends Frame{//构造方法(无参)public Calaulator(){//计算器的组件:3个文本框,一个按钮,一个标签(+号)//3个文本框,这里的num都是String类型TextField num1 = new TextField(10);//最大字符数TextField num2 = new TextField(10);TextField num3 = new TextField(20);//一个按钮Button button = new Button(\"=\");//按钮监听事件,button.addActionListener(new MyCalaulatorListener(num1,num2,num3));//一个标签(+号)Label label = new Label(\"+\");//将3个组件流式布局,从左到右setLayout(new FlowLayout());add(num1);add(label);add( num2);add( button);add( num3);pack();setVisible(true);}}//监听器类// 实现类 实现 接口class MyCalaulatorListener implements ActionListener{//获取3个变量private TextField num1;private TextField num2;private TextField num3;//有参构造public MyCalaulatorListener(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());//用Integer.parseInt把String类型转为int类型int n2=Integer.parseInt(num2.getText());//2.将2个数进行加法运算后放到第3个框num3.setText(\"\"+(n1+n2));//int类型自动转为String类型//3.清除前2个框num1.setText(\"\");num2.setText(\"\");}}
面向对象的思想(更为重要)
package com.wei.work;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//写一个简易计算器public class Work02 {public static void main(String[] args) {//调用非静态方法new Calaulator().loadFrame();}}//建一个计算器类class Calaulator extends Frame{//属性TextField num1;TextField num2;TextField num3;//方法public void loadFrame(){//计算器的组件:3个文本框,一个按钮,一个标签(+号)//3个文本框,这里的num都是String类型num1 = new TextField(10);//最大字符数num2 = new TextField(10);num3 = new TextField(20);//一个按钮Button button = new Button(\"=\");//按钮监听事件,button.addActionListener(new MyCalaulatorListener(this));//一个标签(+号)Label label = new Label(\"+\");//将3个组件流式布局,从左到右setLayout(new FlowLayout());add(num1);add(label);add( num2);add( button);add( num3);pack();setVisible(true);}}//监听器类// 实现类 实现 接口class MyCalaulatorListener implements ActionListener{//获取calaulator计算机这个对象,对象里面就包含属性Calaulator calaulator = null;//有参构造public MyCalaulatorListener(Calaulator calaulator){//this.calaulator = calaulator;//给对象初始化值,把类里的属性赋给对象,然后对象就可以调用类里的属性的}//监听器@Override//重写接口里的方法public void actionPerformed(ActionEvent e) {//按钮监听事件要做的事情//1.获得加数和被加数int n1= Integer.parseInt(calaulator.num1.getText());//用Integer.parseInt把String类型转为int类型int n2= Integer.parseInt(calaulator.num2.getText());//2.将2个数进行加法运算后放到第3个框calaulator.num3.setText(\"\"+(n1+n2));//int类型自动转为String类型//3.清除前2个框calaulator.num1.setText(\"\");calaulator.num2.setText(\"\");}}
用内部类对代码再进行优化
package com.wei.work;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//写一个简易计算器public class Work02 {public static void main(String[] args) {//调用非静态方法new Calaulator().loadFrame();}}//建一个计算器类 外部类class Calaulator extends Frame {//属性TextField num1;TextField num2;TextField num3;//方法public void loadFrame() {//计算器的组件:3个文本框,一个按钮,一个标签(+号)//3个文本框,这里的num都是String类型num1 = new TextField(10);//最大字符数num2 = new TextField(10);num3 = new TextField(20);//一个按钮Button button = new Button(\"=\");//按钮监听事件,button.addActionListener(new MyCalaulatorListener());//一个标签(+号)Label label = new Label(\"+\");//将3个组件流式布局,从左到右setLayout(new FlowLayout());add(num1);add(label);add(num2);add(button);add(num3);pack();setVisible(true);}//监听器类 也是一个内部类 内部类的好处就是可以畅通无阻的访问外部类的方法和属性// 实现类 实现 接口private class MyCalaulatorListener implements ActionListener {//监听器@Override//重写接口里的方法public void actionPerformed(ActionEvent e) {//按钮监听事件要做的事情//1.获得加数和被加数int n1 = Integer.parseInt(num1.getText());//用Integer.parseInt把String类型转为int类型int n2 = Integer.parseInt(num2.getText());//2.将2个数进行加法运算后放到第3个框num3.setText(\"\" + (n1 + n2));//int类型自动转为String类型//3.清除前2个框num1.setText(\"\");num2.setText(\"\");}}}
学习路径(遇见狂神说)