Java界面-AWT-事件监听

Java界面—AWT之事件监听

定义

事件监听:事件源(例如文本框、按钮、文本域)可以注册事件监听器对象,并可以向事件监听器对象发送事件对象,事件发生后,事件源将事件对象发给已经注册的所有事件监听器,监听器对象会根据事件对象内的相应方法响应这个事件。简单来说,一旦用户执行某种行为,就会触发已经编写的相应事件。例如窗口关闭也是一种事件监听,一旦用户点击窗口右上角的“×”,则会触发关闭事件,窗口则会被关闭。

示例

这里定义了一个文本框、两个按钮,并将着三个组件添加进panel面板,最后将panel面板添加进窗口Frame。

在文本框中输入文本,点击回车后,会在控制台输出文本框中的内容;

点击按钮,会在控制台输出相应内容;

package 事件监听;

import java.awt.*;
import java.awt.event.*;

public class ActionTest {
   public static void main(String[] args) {
       //按下按键,触发一些事件
       Frame frame = new Frame();
       frame.setLayout(new FlowLayout());
       Panel panel = new Panel();
       TextField textField = new TextField();
       textField.setColumns(30);
       Button button = new Button("Red");
       Button button1 = new Button("Blue");

       myTextListener myTextListener = new myTextListener();
       textField.addActionListener(myTextListener);

       MyActionListener myActionListener = new MyActionListener(); //用事件类创建一个对象,供两个按钮使用
       button.addActionListener(myActionListener);
       button1.addActionListener(myActionListener);

       frame.add(panel);
       panel.add(textField);
       panel.add(button);
       panel.add(button1);

//       frame.pack();   //窗口自适应
       frame.setBounds(200,200,400,200);
       frame.setVisible(true);
       frame.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
   static class MyActionListener implements ActionListener{        //按钮监听

       @Override
       public void actionPerformed(ActionEvent e) {
           if(e.getActionCommand()=="Red") {   //对按钮的内容进行判断
               System.out.println("RED");
          }else{
               System.out.println("BLUE");
          }

      }
  }

   static class myTextListener implements ActionListener{      //文本框监听

       @Override
       public void actionPerformed(ActionEvent e) {
           TextField textField = (TextField) e.getSource();
           textField.setText("");
           System.out.println(textField.getText());
      }
  }
}

 

原文地址:https://www.cnblogs.com/awong18/p/13094401.html