Java事件处理(1)——实现简单的事件监听功能

    假设我们已经建立了一个窗体,并且添加了一个按钮组件。

  例:模拟登录界面

 1 import javax.swing.*;
 2 import java.awt.*;
 3 
 4 public class LoginUI extends JFrame{
 5     public static void main(String[] args) {
 6         LoginUI U = new LoginUI();
 7         U.initUI();
 8     }
 9     public void initUI()
10     {
11         //建立窗体
12         this.setSize(400, 550);                             //窗体大小
13         this.setTitle("登录界面");                          //标题
14         this.setDefaultCloseOperation(EXIT_ON_CLOSE);//退出界面即关闭程序
15         this.setLocationRelativeTo(null);                   //窗体生成位置变为中央
16         
17         //流式布局
18         FlowLayout fl = new FlowLayout();
19         this.setLayout(fl);
20         
21         JButton bu = new JButton("Login");                         //按钮
22         //添加按钮
23         this.add(bu);
24 
25         //可视化
26         this.setVisible(true);    
27     }
28 }        

  当我们运行程序时,窗体上会显示一个按钮,但是我们单击它并不会有任何响应。假如你登录QQ点半天登录按钮都没有反应,那就会很尴尬了哈。

现在假如我们要单击我们的“Login”按钮,要在控制台显示字符串“欢迎登录”,也就是让系统做出响应该怎么办?这时候就需要我们的事件处理。

  事件我们在这里可以简单地理解为用户的动作,比如:点击鼠标、移动鼠标等。

  在现实生活中啊,我们去处理事件必不可少的就是“事件”、“监听事件的人“、“处理”、“让监听事件的人去处理事件”。在我们上述的程序中,事件就是“点击按钮”

Java为我们提供了ActionEvent类;“监听事件的人”我们称之为“侦听器/监听器”,Java为我们提供的是ActionListener(接口);“处理”即为ActionListener内部的函数;“让监听事件的人去处理事件”就是将事件和侦听器捆绑。

   这是Java提供的接口ActionListener:

1 public interface ActionListener extends EventListener {
2 
3     /**
4      * Invoked when an action occurs.
5      */
6     public void actionPerformed(ActionEvent e);
7 
8 }

  下面我们要做的就是通过一个类去实现一个ActionListener接口(接口不能实例化对象,所以这里采用通过类实现)

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

public class LoginListener implements ActionListener {
    public void actionPerformed(ActionEvent e)
    {
        System.out.println("登陆成功");
    }
}

  我们已经建立了一个实现了ActionListener的LoginListener类,也重写了"处理事件"的函数actionPerformed(尽管有些简单)

  最后一步就是在initUI()函数中把监听器加到按钮上:

   1 LoginListener Loginl = new LoginListener();2 bu.addActionListener(Loginl); 

  

posted @ 2020-10-16 15:30  Christian·Grande  阅读(599)  评论(1)    收藏  举报