AWT 事件处理

AWT的事件处理流程示意图

AWT的事件处理流程示意图

实现AWT事件处理机制的步骤如下

  1. 实现事件监听器类,该监听器类是一个特殊的Java类,必须实现一种XxxListener接口
  2. 创建普通组件(事件源),创建事件监听器对象
  3. 调用addXXXListener()方法将事件监听器对象注册给普通组件。
举个简单的小栗子
package AWTdemo.event;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @author Mike
 * @use 最简单的事件处理Demo
 */
public class EventDemo1 {
    private Frame frame = new Frame("测试");
    private Button button = new Button("submit");
    private TextField textField = new TextField(30);
    public void init (){
        button.addActionListener(new SubmitListener());
        frame.add(textField,BorderLayout.NORTH);
        frame.add(button,BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
    class SubmitListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("用户点击了提交按钮");
            textField.setText("hello world");
        }
    }

    public static void main(String[] args) {
        new EventDemo1().init();
    }
}
一个监听器监听多个组件,一个组件被多个监听器监听
package AWTdemo.event;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @author Mike
 * @use 一个监听器监听多个组件,一个组件被多个监听器监听
 */
public class EventDemo2 {
    private Frame frame = new Frame();
    private Button button1 = new Button("Button1");
    private Button button2 = new Button("Button2");
    private TextArea ta = new TextArea(6,30);
    public void init(){
        FirstListener f1 = new FirstListener();
        button1.addActionListener(f1);
        button2.addActionListener(f1);
        button2.addActionListener(new SecondListener());
        Panel panel = new Panel();
        panel.add(button1);
        panel.add(button2);
        frame.add(panel,BorderLayout.SOUTH);
        frame.add(ta,BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
    public class FirstListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            ta.append("第一个事件监控器被触发,事件源是:"+e.getActionCommand()+"\n");
        }
    }
    public class SecondListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            ta.append("第二个事件监控器被触发,事件源是:"+e.getActionCommand()+"\n");
        }
    }

    public static void main(String[] args) {
        new EventDemo2().init();
    }
}

窗口监听器,有好多,这里只举例关闭窗口,其他的同理重写方法体就好了
package AWTdemo.event;

import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

/**
 * @author Mike
 * @use WindowListener用法,这里只写如何关闭窗口
 */
public class EventDemo3 {
    private Frame frame = new Frame();
    private TextArea ta = new TextArea(6,40);
    public void init(){
    frame.addWindowListener(new CloseListener());
    frame.add(ta,BorderLayout.NORTH);
    frame.pack();
    frame.setVisible(true);
    }
    public class CloseListener implements WindowListener{

        @Override
        public void windowOpened(WindowEvent e) {

        }

        @Override
        public void windowClosing(WindowEvent e) {
            ta.append("用户关闭窗口");
            System.exit(0);
        }

        @Override
        public void windowClosed(WindowEvent e) {

        }

        @Override
        public void windowIconified(WindowEvent e) {

        }

        @Override
        public void windowDeiconified(WindowEvent e) {

        }

        @Override
        public void windowActivated(WindowEvent e) {

        }

        @Override
        public void windowDeactivated(WindowEvent e) {

        }
    }

    public static void main(String[] args) {
        new EventDemo3().init();
    }
}

匿名内部类实现监听器
package AWTdemo.event;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

/**
 * @author Mike
 * @use 匿名内部类实现监听器
 */
public class EventDemo4 {
    private Frame frame = new Frame();
    private TextArea ta = new TextArea(6,40);
    public void init(){
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("用户关闭窗口");
                System.exit(0);
            }
        });
        frame.add(ta,BorderLayout.NORTH);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new EventDemo4().init();
    }
}

发布了18 篇原创文章 · 获赞 18 · 访问量 1179

猜你喜欢

转载自blog.csdn.net/qq_42542609/article/details/103214758
AWT
今日推荐