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);