这回来讲一下JAVA中组件的事件处理,个人认为从本章起到后面的内容都是比较难的,当初我学的时候也有很多不懂的地方,后来通过练习,慢慢掌握的,所以大家一定要多看别人的例程,自己多动手练习一下,应该是没有问题的!
事件处理
在JAVA中,一个事件包括事件对象,事件源和事件处理程序。在JAVA中要实现某个组件事件处理,就必需先添加监听程序,也就是说,监听程序就是监视组件是否产生了事件,只有添加它才能让程序知道响应事件处理,否则程序是无法知道组件在何时产生了事件的,也就无法响应对事件的处理了。当你创建监听程序而使用的是接口的话,那么就必须重写接口中声明的所有方法(因为全为抽象方法,所以全部需要重新实现),这样子是比较麻烦的,事实上JAVA有为大部分多方法接口提供了适配器。使用适配器可以让你只写需要的监听程序就行了。
下面给出JAVA中最主要的基本常用适配器类和接口列表:
事件种类
接口
适配器
方法
窗口
WindowListener
WindowAdapter
void windowClosing (windowEvent e)
void windowOpened (windowEvent e)
void windowActiveed (windowEvent e)
void windowDeactivated (windowEvent e)
void windowClosed (windowEvent e)
void windowIconified (windowEvent e)
void windowDeiconified (windowEvent e)
动作
ActionListener
void actionPerformed (windowEvent e)
列表
ItemListener
void itemStateChanged (windowEvent e)
鼠标移动
MouseMotionListener
MouseMotionAdapter
void mouseDragged (windowEvent e)
void mouseMoved (windowEvent e)
鼠标按钮
MouseListener
MouseAdapter
void mousePressed (MouseEvent e)
void mouseReleased (MouseEvent e)
void mouseEntered (MouseEvent e)
void mouseExited (MouseEvent e)
void mouseClicked (MouseEvent e)
按键
KeyListener
KeyAdapter
void KeyPressed (KeyEvent e)
void KeyReleased (KeyEvent e)
void KeyTyped (KeyEvent e)
聚焦
FocusListener
void focusGained (FocusEvent e)
void focusLost (FocusEvent e)
组件
ComponentListener
ComponentAdapter
void componentMoved (ComponentEvent e)
void componentResized (ComponentEvent e)
void componentHidden (ComponentEvent e)
void componentShown (ComponentEvent e)
下面作个简单的练习,实现点击窗口最右上角按钮后退出程序(如果不添加事件处理代码的话,是不能退出程序的,只能关闭窗口),源代码如下:
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
//适配器用法
public class Kill extends JFrame
{
public Kill()
{
Fobj.setVisible(true);
Fobj.setSize(300,300);
Fobj.addWindowListener(new WindowClose()); //为窗口添加监听器
}
class WindowClose extends WindowAdapter //继承窗口处理适配器
{
public void windowClosing(WindowEvent e)
{
System.exit(0); //响应按钮点击事件,即关闭窗口
}
}
public static void main(String agrc[])
{
Kill obj=new Kill();
}
}
这样就可以实现点击窗口关闭按钮来退出程序了。上面代码是通过窗口适配器来实现的,另外我再用按钮的动作接口来完成,主要区别接口与适配器的区别:
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
//适配器用法
public class Kill
{
JFrame Fobj;
JPanel Pobj;
JButton Bobj;
public Kill()
{
Fobj=new JFrame("测试");
Pobj=new JPanel();
Bobj=new JButton("确定");
Fobj.getContentPane().add(Pobj);
Pobj.add(Bobj);
Bobj.addActionListener(new AL()); //添加按钮监听
Fobj.setVisible(true);
Fobj.setSize(300,300);
Fobj.addWindowListener(new WindowClose()); //为按钮添加监听器
}
class AL implements ActionListener //定义类AL并继承动作接口来响应点击事件
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
public static void main(String agrc[])
{
Kill obj=new Kill();
}
}
这样就完成了点击按钮来退出程序的功能了。到这里事件的演示就暂时告一段落,大家还有什么不明白了,欢迎与我讨论!下次来学习JAVA中的异常处理,是非常重要的章节,往后的文件读写操作,网络编程,线程控制等都需要用到,所以必须得了解一下!