小博老师解析Java核心技术 ——JSwing键盘监听事件

[引言]

我们在学习Java编程的时候,如果需要开发客户端窗体类型的程序,可以使用JDK中的awt和swing库。本文开始小博老师就继续为大家演示Java窗体编程中的各类监听器,今天主要讲解键盘监听器中的事件。

[步骤阅读一]键盘监听器事件列表

监听器的主要作用,是为窗体中的控件增加与用户行为之间的交互功能,使得整个窗体应用程序拥有活跃的元素,加强用户体验性。

其中常用监听器主要分为:鼠标监听器(MouseListener)、鼠标手势监听器(MouseMotionListener)、键盘监听器(KeyListener)、窗体监听器(WindowListener)、行为监听器(ActionListener)等顶层接口。

今天小博老师就为大家主要讲解键盘监听器(KeyListener),我们首先来了解一下键盘监听器可以与用户的哪些行为进行交互,它们均以接口中的方法来封装:

voidkeyTyped(KeyEvente):键盘按下监听事件

voidkeyReleased(KeyEvente):键盘释放监听事件

voidkeyPressed(KeyEvente):按键回显监听事件

这些方法均拥有一个形参(KeyEvent),该参数是键盘事件对象,其中包含了当前事件触发时,整个事件的各类数据信息,比如:触发事件的控件、触发事件的按键,当前功能键(Ctrl、Alt、Shift等)是否处于激活状态等等信息。

在键盘监听事件中,小博老师要额外提醒一下大家,当用户按一次键盘时,整个事件的传递顺序为:键盘按下、按键回显、按键释放,这么一个过程。其中键盘按下和按键回显事件时在回显效果之前被调用的,它们的区别是:无论用户按下的是回显键(如:A,K,8等)还是功能键(如Ctrl、Shift、Alt等)都会调用键盘按下事件,但是如果你只希望监听用户按下的回显键而对于功能键不需要监听,那就可以使用按键回显事件。最后,按键释放事件是在回显效果之后才会被调用的。

[步骤阅读二]键盘监听器的使用

接下来,小博老师通过一个简单的案例,让用户输入账户名称,即时校验账户名称是否合法(6-12位之间),让大家一起体验一下键盘监听器的使用方式,由于我们的需求是要知道用户当前输入的账户名称的长度,这个校验事件应该在回显效果之后调用,因此选择使用按键释放事件。核心代码如下:

publicclassMenuFrameextendsJFrame{

publicMenuFrame(){

super("博为峰教育");

setBounds(100, 20, 300, 200);

setLayout(null);

// 实例化 标签控件 用来提示用户输入账户名称

lbUname=newJLabel("账户名称:");

lbUname.setBounds(5, 5, 70, 25);

add(lbUname);

// 实例化 文本框控件 用来接收用户填写的账户名称

txtUname=newJTextField();

txtUname.setBounds(80, 5, 200, 25);

add(txtUname);

// 实例化 标签控件 用来验证用户填写的账户名称是否合法(6-12位之间)

lbUnameValidate=newJLabel();

lbUnameValidate.setBounds(80, 35, 200, 25);

add(lbUnameValidate);

// 给 文本框控件 注册 鼠标监听器 用来校验用户填写的账户名称是否合法

txtUname.addKeyListener(newKeyListener() {

// 键盘按下监听事件

publicvoidkeyTyped(KeyEvente) {}

// 键盘释放监听事件

publicvoidkeyReleased(KeyEvente) {

// 获取当前文本框控件中,账户名称的长度

intlen=txtUname.getText().length();

// 判断账户名称长度是否合法

if(len< 6 ){

lbUnameValidate.setText("账户名称最少6位!");

lbUnameValidate.setForeground(newColor(255,0,0));

}elseif(len> 12){

lbUnameValidate.setText("账户名称最多12位!");

lbUnameValidate.setForeground(newColor(255,0,0));

}else{

lbUnameValidate.setText("合法账户名称!");

lbUnameValidate.setForeground(newColor(0,255,0));

}

}

// 按键回显监听事件

publicvoidkeyPressed(KeyEvente) {}

});

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

privateJLabellbUname;

privateJTextFieldtxtUname;

privateJLabellbUnameValidate;

}

实例化窗体对象并且运行后,测试各类事件效果如下:

小博老师解析Java核心技术 ——JSwing键盘监听事件_第1张图片

小博老师解析Java核心技术 ——JSwing键盘监听事件_第2张图片

小博老师解析Java核心技术 ——JSwing键盘监听事件_第3张图片

你可能感兴趣的:(小博老师解析Java核心技术 ——JSwing键盘监听事件)