事件监听当某个事件完成时会做什么如 按下按钮生成aaapackage com.kuang.lesson02; import java.awt.*; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowAdapter; public class TestActionEvent { public static void main(String[] args){ //按下按钮触发一些事件 Frame frame new Frame(); Button button new Button(); //因为addActionListener()需要一个ActionListener所以我们需要构造一个ActionListener MyActionListener myActionListener new MyActionListener(); button.addActionListener(myActionListener); frame.add(button,BorderLayout.CENTER); frame.pack(); windowClose(frame);//关闭窗口 frame.setVisible(true); } //关闭窗口的事件 private static void windowClose(Frame frame){ frame.addWindowListener(new WindowAdapter(){ Override public void windowClosing(WindowEvent e){ System.exit(0); } }); } } //事件监听 class MyActionListener implements ActionListener{ Override public void actionPerformed(ActionEvent e) { System.out.println(aaa); } }一个监听器监听多个组件package com.kuang.lesson02; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class TestActionEventTwo { public static void main(String[] args) { //两个按钮实现同一个监听 Frame frame new Frame(开始-停止); Button button1 new Button(start); Button button2 new Button(stop); button2.setActionCommand(button2-stop); MyMonitor myMonitor new MyMonitor(); button1.addActionListener(myMonitor); button2.addActionListener(myMonitor); frame.add(button1, BorderLayout.NORTH); frame.add(button2, BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); } static class MyMonitor implements ActionListener { Override public void actionPerformed(ActionEvent e){ System.out.println(按钮被点击了e.getActionCommand()); } } }import javax.swing.*; // Swing组件Frame/Button等 import java.awt.*; // AWT基础类BorderLayout等 import java.awt.event.*; // 事件处理相关ActionEvent/ActionListener输入框TextField监听package com.kuang.lesson02; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class TestText01 { public static void main(String[] args) { //启动 new MyFrame(); } } class MyFrame extends Frame { public MyFrame() { TextField textField new TextField(); add(textField); //监听这个文本框输入的文字 MyActionListener2 myActionListener2 new MyActionListener2(); //按下enter 就会触发这个输入框的事件 textField.addActionListener(myActionListener2); //设置替换编码 textField.setEchoChar(*); setVisible(true); pack();//自适应 } } class MyActionListener2 implements ActionListener { Override public void actionPerformed(ActionEvent e){ TextField field (TextField) e.getSource();//获得一些资源返回的一个对象 System.out.println(field.getText());//获得输入框的文本 field.setText();//null } }简易计算器组合内部类回顾复习oop原则里组合大于继承package com.kuang.lesson02; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; //简易计算器 public class TestCalc { public static void main(String[] args) { new Calculator(); } } //计算机类 class Calculator extends Frame { public Calculator() { //3个文本框 TextField num1 new TextField(10);//字符数 TextField num2 new TextField(10);//字符数 TextField num3 new TextField(20);//字符数 //1个按钮 Button button new Button(); button.addActionListener(new MyCalculatorListenter(num1,num2,num3)); //1个标签 Label label new Label(); //布局 setLayout(new FlowLayout()); add(num1); add(label); add(num2); add(button); add(num3); pack(); setVisible(true); } } //监听器类 class MyCalculatorListenter implements ActionListener { //获取三个变量 private TextField num1, num2, num3; public MyCalculatorListenter(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.将这个值进行加法运算后放到第三个框 num3.setText((n1n2)); //3.清除前两个框 num1.setText(); num2.setText(); } }完全改造为面向对象package com.kuang.lesson02; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; //简易计算器 public class TestCalc { public static void main(String[] args) { new Calculator().loadFrame(); } } //计算机类 class Calculator extends Frame { //属性 TextField num1, num2,num3; //方法 public void loadFrame(){ num1 new TextField(10);//字符数 num2 new TextField(10);//字符数 num3 new TextField(20);//字符数 Button button new Button(); Label label new Label(); button.addActionListener(new MyCalculatorListener(this)); //布局 setLayout(new FlowLayout()); add(num1); add(label); add(num2); add(button); add(num3); pack(); setVisible(true); } public Calculator() { } } //监听器类 class MyCalculatorListenter implements ActionListener { //获取计算机这个对象,在一个类中组合另外一个类 Calculator calculator null; public MyCalculatorListener(Calculator calculator ) { this.calculator calculator; } Override public void actionPerformed(ActionEvent e) { // 1.获得加数和被加数 // 2.将这个值进行加法运算后放到第三个框 // 3.清除前两个框 int n1 Integer.parseInt(calculator.num1.getText()); int n2 Integer.parseInt(calculator.num2.getText()); calculator.num3.setText((n1n2)); calculator.num1.setText(); calculator.num2.setText(); } }内部类更好的包装package com.kuang.lesson02; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; //简易计算器 public class TestCalc { public static void main(String[] args) { new Calculator().loadFrame(); } } //计算机类 class Calculator extends Frame { //属性 TextField num1, num2, num3; //方法 public void loadFrame() { num1 new TextField(10);//字符数 num2 new TextField(10);//字符数 num3 new TextField(20);//字符数 Button button new Button(); Label label new Label(); button.addActionListener(new MyCalculatorListener()); //布局 setLayout(new FlowLayout()); add(num1); add(label); add(num2); add(button); add(num3); pack(); setVisible(true); } //监听器类 //内部类最大的好处就是可以畅通无阻的访问外部的属性和方法 private class MyCalculatorListener implements ActionListener { Override public void actionPerformed(ActionEvent e) { // 1.获得加数和被加数 // 2.将这个值进行加法运算后放到第三个框 // 3.清除前两个框 int n1 Integer.parseInt(num1.getText()); int n2 Integer.parseInt(num2.getText()); num3.setText( (n1 n2)); num1.setText(); num2.setText(); } } }