Swing组件的常用事件监听器

监听事件简介
在Swing事件模型中由3个分离的对象完成对事件的处理,分别为事件源、事件以及监听程序。事件源触发一个事件,它被一个或多个“监听器”接收,监听器负责处理事件。
所谓事件监听器,实质上就是一个“实现特定类型监听器接口”的类对象。事件几乎都以对象来表示,它是某种事件类的对象,事件源(如按钮)会在用户作出相应的动作(如按钮被按下)时产生事件对象,如动作事件对应ActionEvent类对象,同时要编写一个监听器的类必须实现相应的接口,如ActionEvent类对应的是ActionListener接口,需要获取某个事件对象就必须实现相应的接口,同时需要将接口中的方法一一实现。最后事件源(按钮)调用相应的方法加载这个“实现特定类型监听器接口”的类对象,所有的事件源都具有addXXXListener()和removeXXXListener()方法(其中“XXX”方法表示监听事件类型),这样就可以为组件添加或移除相应的事件监听器。

动作事件监听器

动作事件(ActionEvent)监听器是Swing中比较常用的事件监听器,很多组件的动作都会使用它监听,如按钮被单击。
事件名称 事件源 监听接口 添加或删除相应类型监听器的方法
ActionEvent JButton,JList,JTextField等 ActionListener addActionListener()
removeActionListener()
actionPerformed()方法中定义当用户单击该按钮后实现的功能。

焦点事件监听器

焦点事件(FocusEvent)监听器在实际项目开发中应用也比较广泛,如将光标焦点离开一个文本框时需要弹出一个对话框,或者将焦点返回给该文本框等。
事件名称 事件源 监听接口 添加或删除相应类型监听器的方法
FocusEvent Componnet以及派生类 FocusListener addFocusListener()
removeFocusListener ()
focusLost() 方法是在组件失去焦点时调用的
focusGained() 方法是在组件获取焦点时调用的

键盘事件(KeyEvent)

当向文本框中输入内容时,将发出键盘事件。KeyEvent类负责捕获键盘事件,可以通过为组件添加实现了KeyListener接口的监听器类来处理相应的键盘事件。
KeyListener接口共有三个抽象方法,分别在发生击键事件、按键被按下和释放时被触发。KeyListener接口的具体定义如下所示:
public interface KeyListener extends EventListener {
public void keyTyped(KeyEvent e); //发生击键事件时被触发
public void keyPressed(KeyEvent e); //按键被按下时被触发
public void keyReleased(KeyEvent e); //按键被释放时被触发
}

KeyEvent类中常用方法
在这里插入图片描述

鼠标事件(MouseEvent)

所有组件都能发出鼠标事件,MouseEvent类负责捕获鼠标事件,可以通过为组件添加实现了MouseListener接口的监听器类来处理相应的鼠标事件。
MouseListener接口共有5个抽象方法,分别在光标移入或移出组件时、鼠标按键被按下或释放时和发生单击事件时被触发。所谓单击事件,就是按键被按下并释放。需要注意的是,如果按键是在移出组件之后才被释放,则不会触发单击事件。
public interface MouseEvent extends EventListener {
public void mouseEvent(MouseEvent e); //光标移入时被触发
public void mousePressed(MouseEvent e); //鼠标按键被按键时被触发
public void mouseReleased(MouseEvent e); //鼠标按键被释放时被触发
public void mouseClicked (MouseEvent e); //发生单击事件时被触发
public void mouseExited(MouseEvent e); //光标移除组件时被触发
}
MouseEvent类中常用方法
在这里插入图片描述
MouseEvent类中代表鼠标按键的静态常量
在这里插入图片描述

窗体事件(WindowEvent)

捕获窗体焦点变化事件
需要捕获窗体焦点发生变化的事件时,即窗体获得或失去焦点的事件时,可以通过实现了WindowFocusListener接口的事件监听器完成,WindowFocusListener接口的具体定义如下:
public interface WindowFocusListener extends EventListener {
public void windowGainedFocus(WindowEvent e);//窗体获得焦点时被触发
public void windowLostFocus(WindowEvent e); //窗体失去焦点时被触发
}
通过捕获窗体获得或失去焦点的事件,可以进行一些相关的操作,例如当窗体重新获得焦点时,令所有组件均恢复为默认设置。
捕获窗体状态变化事件
需要捕获窗体状态发生变化的事件时,即窗体由正常化变为图标化、由最大化变为正常化等事件时,可以通过实现了WindowStateListener接口的事件监听器完成。WindowStateListener接口的具体定义如下所示:
public interface WindowStateListener extends EventListener {
public void windowStateChanged(WindowEvent e); //窗体状态发生变化时被触发
}
WindowEvent类中的两个常用方法,用来获得窗体的状态,均返回一个代表窗体状态的int型值。
getNewState()获得窗体现在的状态
getOldState()获得窗体以前的状态
通过Frame类中的静态常量判断返回的int型值具体代表什么状态,如下
静态常量 常量值 代表的键
NORMAL 0 代表窗体处于正常化状态
ICONIFIED 1 代表窗体处于最小化状态
MAXIMIZED_BOTH 6 代表窗体处于最大化状态
捕获其他窗体事件
需要捕获其他与窗体有关的事件时,例如捕获窗体被打开、将要被关闭、已经被关闭等事件时,可以通过实现了WindowListener接口的事件监听器完成。WindowListener接口的具体定义如下所示:
public interface WindowListener extends EventListener {
public void windowActivated(WindowEvent e); //窗体被激活时触发
public void windowOpened(WindowEvent e); //窗体被打开时触发
public void windowIconified(WindowEvent e); //窗体被图标化时触发
public void windowDeiconified(WindowEvent e); //窗体被非图标化时触发
public void windowClosing(WindowEvent e); //窗体将要被关闭时触发
public void windowDeactivated(WindowEvent e); //窗体不再处于激活状态时触发
public void windowClosed(WindowEvent e); //窗体已经被关闭时触发
}
通过捕获窗体将要被关闭等事件,可进行一些相关的操作,如窗体被关闭时,询问是否保存为保存的设置等。

选项事件(ItemEvent)

当修改下拉菜单中的选中项时,将发出选项事件。ItemEvent类负责捕获选项事件,可以通过为组件添加实现了ItemListener接口的监听器类来处理相应的选项事件。
ItemListener接口只有一个抽象方法,在修改一次下拉菜单选中项的过程中,该方法将被触发两次,一次是由取消原来选中项的选中状态触发的,另一次是由选中新选项触发的。ItemListener接口的具体定义如下所示:
public interface ItemListener extends EventListener {
void itemStateChanged(ItemEvent e);
}
ItemEvent类的常用方法
getItem() 获得触发此事件的选项,返回Object型
getStateChange() 获得此次事件的类型,即是由取消原来选中项的选中状态处触发的,还是由选中新选项触发的。此方法返回以int型值,可通过ItemEvent类中如下静态常量判断此次事件的具体类型。
SELECTED如果返回值等于该静态常量,说明此次事件是由选中新选项触发的
DESELECTED如果返回值等于该静态常量,说明此次事件是由取消原来选中状态触发的
通过捕获这些选项事件,可进行相关操作,如同步处理其他下拉菜单的可选项。
选中项未发生变化时,并不会触发选项事件。

表格模型事件(TableModelEvent)

当向表格模型中添加行时,或者是修改或删除表格模型中的现有行时,将发出表格模型事件。TableModelEvent类负责捕获表格模型事件,可以通过为组件添加实现了TableModelListener接口的监听器类来处理相应的表格模型事件。
TableModelListener接口只有一个抽象方法,当向表格模型中添加行时,或者是修改或删除表格模型中的现有行时,该方法将被触发,TableModelListener接口的具体定义如下所示:
public interface TableModelListener extends java.util.EventListener {
public void tableChanged(TableModelEvent e);
}
TableModelEvent类中常用方法
方法 功能介绍
getType() 获得此次事件的类型
getFirstRows() 获得触发此次事件的表格行的最小索引值
getLastRows() 获得触发此次事件的表格行的最大索引值
getColumn() 如果事件类型为UPDATE,
获得触发此次事件的表格列的索引值,否则返回-1
getType()方法返回一个int型值,可通过TableModelEvent类中的如下静态常量判断此次事件的具体类型。
INSERT如果返回值等于该常量,说明此次事件是由插入行触发的
UPDATE如果返回值等于该常量,说明此次事件是由修改行触发的
DELETE如果返回值等于该常量,说明此次事件是由删除行触发的
通过捕获表格模型事件,可进行一些相关操作,如自动计算表格某一列的总和。

猜你喜欢

转载自blog.csdn.net/weixin_43794314/article/details/84672684