论文部分内容阅读
摘 要 Java桌面程序既要有友好易用的图形用户界面,也应实现相应的功能。在开发桌面程序时,Java事件处理机制是让图形用户界面能响应用户交互动作的关键,本文就着重讨论了Java桌面程序开发时几种常见的事件处理编码方式。
关键词 Java;桌面程序;事件处理
中图分类号:TP311 文献标识码:A 文章编号:1671—7597(2013)041-068-02
使用Java语言进行桌面程序开发包含两个关键步骤:一是实现图形用户界面;二是实现界面与用户的交互功能。桌面程序如果空有界面,但用户做什么都没有反应,程序不能与用户互动,那这个程序就没有实际意义了。为了让图形用户界面能“动”起来,能对用户的操作比如点击按钮、选择菜单命令等做出响应,就需要为图形用户界面添加事件处理编码。
2 Java的授权事件处理模型
Java采用授权事件模型(Delegation Event Model,也称为委托事件模型)的事件处理机制来实现图形用户界面与用户交互的功能。授权事件处理模型是指当用户与界面上的组件发生交互操作触发事件时,组件本身并不直接处理事件,而是将事件的处理工作委托给事件监听器对象,由监听器对象实现具体的功能。授权事件处理模型的示意图如图1所示。
采用授权事件模型进行事件处理编码,实现界面与用户的交互功能主要包含三个要点:
1)确定事件源和事件,即确定界面上的什么组件是有必要监听它与用户的交互动作的,该组件与用户交互产生的哪种事件是需要程序作出响应的。
2)根据事件源和事件编写事件处理代码。在授权事件模型中,事件监听器负责监听事件源上的事件,并能在事件产生后调用特定方法、执行功能代码。Java提供了一些事件监听器接口,能监听不同类型的事件,程序员需要实现监听器接口来创建用于自己程序的监听器类,重写接口中的方法,这些方法在事件发生时将自动被调用。
3)为事件源注册监听器对象。只有将事件源与监听器对象这样绑定之后,事件源上发生与用户的交互事件时,才会触发监听器对象中相应方法的执行,即调用具体的功能代码,亦即程序对用户的交互动作作出了响应。
3 事件处理编码的两种常见方式
由授权事件处理模型可知,事件处理编码的主要工作包含两个:1)创建监听事件的监听器类,重写其中的功能方法。2)给需要监听的组件(事件源)注册监听器类的对象。接下来,以一个典型的桌面程序模块——登录验证为例,介绍两种常见的事件处理编码方式。登录验证模块功能如图2、图3所示。用户点击“登陆”按钮即进行账号、密码验证并反馈验证结果,用户点击“重置”按钮则清空账号和密码框。
为方便演示,此示例中假定合法账号、密码为admin和1234,实际应用中账号、密码应存于数据库。账号文本框名为t_name,密码框名为p_pwd,登陆按钮名为b_login,重置按钮名为b_reset,均使用javax.swing包中的组件类型创建。
3.1 界面类同时作为监听器类方式
实现界面的类同时实现监听器接口成为监听器类,因此,事件源注册的监听器对象即为本类对象。两个按钮可以注册同一个监听器对象,在实现具体功能之前应先区分事件源是“登陆”还是“重置”按钮,然后再实现各自对应的功能。核心代码如下:
public class LoginFrame extends JFrame implements ActionListener{
……
// 两按钮注册监听器
b_login.addActionListener(this);
b_reset.addActionListener(this);
……
//ActionListner接口必須实现的方法,此方法在ActionEvent事件发生时自动被调用
public void actionPerformed(ActionEvent e) {
// 事件源是“登陆”按钮
if (e.getSource() == b_login) {
//验证账号、密码合法性并反馈结果
String pwd = new String(p_pwd.getPassword());
if ("admin".equals(t_name.getText())&&"1234".equals(pwd)) { JOptionPane.showMessageDialog(this, "登陆成功!");
} else {
JOptionPane.
showMessageDialog(this, "账号或密码错误,登陆失败!");
}
}
// 事件源是“重置”按钮
if (e.getSource() == b_reset) {
//清空账号、密码框
t_name.setText("");
p_pwd.setText("");
}
}
3.2 匿名内部类方式
以匿名内部类的方式实现监听器类,并实例化一个匿名对象直接注册给事件源。这种方式是所见即所得的图形用户界面开发工具中较常使用的方式。“登陆”按钮和“重置”按钮各自注册自己的监听器对象实现对应的功能,核心代码如下:
// "登陆"按钮注册监听器
b_login.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//验证账号、密码合法性并反馈结果
……
}
});
// "重置"按钮注册监听器
b_reset.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//清空账号、密码框
……
}
});
4 小结
事件处理编码的方式虽然是多样的,但中心思想是一致的,那就是:创建监听某种类型事件的监听器类,将监听器对象注册给事件源。理解了这个中心思想,那不同的编码方式就都容易理解和掌握了。
参考文献
[1]曹静,Java桌面程序开发[M].大连理工大学出版社,2011.
作者简介
肖英(1980-),女,汉族,湖北武汉人,讲师。
关键词 Java;桌面程序;事件处理
中图分类号:TP311 文献标识码:A 文章编号:1671—7597(2013)041-068-02
使用Java语言进行桌面程序开发包含两个关键步骤:一是实现图形用户界面;二是实现界面与用户的交互功能。桌面程序如果空有界面,但用户做什么都没有反应,程序不能与用户互动,那这个程序就没有实际意义了。为了让图形用户界面能“动”起来,能对用户的操作比如点击按钮、选择菜单命令等做出响应,就需要为图形用户界面添加事件处理编码。
2 Java的授权事件处理模型
Java采用授权事件模型(Delegation Event Model,也称为委托事件模型)的事件处理机制来实现图形用户界面与用户交互的功能。授权事件处理模型是指当用户与界面上的组件发生交互操作触发事件时,组件本身并不直接处理事件,而是将事件的处理工作委托给事件监听器对象,由监听器对象实现具体的功能。授权事件处理模型的示意图如图1所示。
采用授权事件模型进行事件处理编码,实现界面与用户的交互功能主要包含三个要点:
1)确定事件源和事件,即确定界面上的什么组件是有必要监听它与用户的交互动作的,该组件与用户交互产生的哪种事件是需要程序作出响应的。
2)根据事件源和事件编写事件处理代码。在授权事件模型中,事件监听器负责监听事件源上的事件,并能在事件产生后调用特定方法、执行功能代码。Java提供了一些事件监听器接口,能监听不同类型的事件,程序员需要实现监听器接口来创建用于自己程序的监听器类,重写接口中的方法,这些方法在事件发生时将自动被调用。
3)为事件源注册监听器对象。只有将事件源与监听器对象这样绑定之后,事件源上发生与用户的交互事件时,才会触发监听器对象中相应方法的执行,即调用具体的功能代码,亦即程序对用户的交互动作作出了响应。
3 事件处理编码的两种常见方式
由授权事件处理模型可知,事件处理编码的主要工作包含两个:1)创建监听事件的监听器类,重写其中的功能方法。2)给需要监听的组件(事件源)注册监听器类的对象。接下来,以一个典型的桌面程序模块——登录验证为例,介绍两种常见的事件处理编码方式。登录验证模块功能如图2、图3所示。用户点击“登陆”按钮即进行账号、密码验证并反馈验证结果,用户点击“重置”按钮则清空账号和密码框。
为方便演示,此示例中假定合法账号、密码为admin和1234,实际应用中账号、密码应存于数据库。账号文本框名为t_name,密码框名为p_pwd,登陆按钮名为b_login,重置按钮名为b_reset,均使用javax.swing包中的组件类型创建。
3.1 界面类同时作为监听器类方式
实现界面的类同时实现监听器接口成为监听器类,因此,事件源注册的监听器对象即为本类对象。两个按钮可以注册同一个监听器对象,在实现具体功能之前应先区分事件源是“登陆”还是“重置”按钮,然后再实现各自对应的功能。核心代码如下:
public class LoginFrame extends JFrame implements ActionListener{
……
// 两按钮注册监听器
b_login.addActionListener(this);
b_reset.addActionListener(this);
……
//ActionListner接口必須实现的方法,此方法在ActionEvent事件发生时自动被调用
public void actionPerformed(ActionEvent e) {
// 事件源是“登陆”按钮
if (e.getSource() == b_login) {
//验证账号、密码合法性并反馈结果
String pwd = new String(p_pwd.getPassword());
if ("admin".equals(t_name.getText())&&"1234".equals(pwd)) { JOptionPane.showMessageDialog(this, "登陆成功!");
} else {
JOptionPane.
showMessageDialog(this, "账号或密码错误,登陆失败!");
}
}
// 事件源是“重置”按钮
if (e.getSource() == b_reset) {
//清空账号、密码框
t_name.setText("");
p_pwd.setText("");
}
}
3.2 匿名内部类方式
以匿名内部类的方式实现监听器类,并实例化一个匿名对象直接注册给事件源。这种方式是所见即所得的图形用户界面开发工具中较常使用的方式。“登陆”按钮和“重置”按钮各自注册自己的监听器对象实现对应的功能,核心代码如下:
// "登陆"按钮注册监听器
b_login.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//验证账号、密码合法性并反馈结果
……
}
});
// "重置"按钮注册监听器
b_reset.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//清空账号、密码框
……
}
});
4 小结
事件处理编码的方式虽然是多样的,但中心思想是一致的,那就是:创建监听某种类型事件的监听器类,将监听器对象注册给事件源。理解了这个中心思想,那不同的编码方式就都容易理解和掌握了。
参考文献
[1]曹静,Java桌面程序开发[M].大连理工大学出版社,2011.
作者简介
肖英(1980-),女,汉族,湖北武汉人,讲师。