java键盘鼠标监听

java键盘鼠标监听


2024年6月18日发(作者:)

键盘监听器和鼠标监听器

键盘监听器

键盘监听器KeyListener用来监听键盘事件。键盘事件有三种:KEY_PRESSED键

按下了,KEY_RELEASED键松开了,KEY_TYPED键按过了。每个键都有一个键码,

普通键的键码就是ASCII码。键码可通过int getKeyCode()方法获得。Java设

置了一种“虚拟键码”(Virtual Key Code),用“VK_”作为前缀,例如VK_G。

下面是某些特殊键的虚拟键码。

键码

VK_KP_UP

VK_PAUSE

VK_NUMBER0

VK_0

含义

小键盘向上

暂停键

小键盘数字0

数字键0

键码

VK_CONTROL

VK_ATL

VK_SHIFT

VK_F1

VK_B

含义

Ctrl键

Alt键

Shift键

功能键F1

字母键B

VK_LEFT/VK_RIGHT 左右方向键

虚拟键码对应的是键位,不区分大小写。要想知道大小写还必须查看修饰键

(modifier key)。这由输入事件InputEvent的getModifere()方法得到,把返

回值与常量SHIFT_MASK, CONTROL_MASK, ALT_MASK比较,用以判定哪个修饰键

处于“同时按下”状态。

监听器KeyListener有三个方法keyPressed(KeyEvent

evt),keyReleased(KeyEvent evt),keyTyped(KeyEvent evt),分别用于相应事

件发生后的处理。下面的例程中给自己的键盘监听器建立了showKeyEventMsg

方法来显示按键信息。

除了getKeyCode()方法得到键码外,还可用getKeyChar()方法得到输入的字符,

用getKeyText(code)方法得到输入的字符串。用isShiftDown()判断shift键是

否被按下等。当按下Control键时getKeyText返回的是“ctrl",Alt和Shift

也类似。

下面的例子演示得到键码和字符的方法,在命令行上显示结果。

例15 本例程演示键盘监听器后键码的用法。

///

//

import .*;

import .*;

import .*;

class MyKeyListener implements KeyListener{

public void keyPressed(KeyEvent evt) {

n("n按键被按下");

showKeyEventMsg(evt);

}

public void keyReleased(KeyEvent evt){ }

public void keyTyped(KeyEvent evt) { }

private void showKeyEventMsg(KeyEvent evt){//显示按键事件信息

//得到按键对应的整型数

int code = Code();

//返回按键事件所代表的字符

char c = Char();

//得到代表按键的字符串

String szText = Text(code);

if (code != _UNDEFINED)

n("n按键对应的整型数:"+code);

if (c != _UNDEFINED)

n("n与按键相联系的字符:"+c);

if (tDown())

n("n按键Shift被按下");

n("n按键本身的字符串:"+szText);

}

}

class ButtonPanel extends JPanel{

public ButtonPanel() {

//新建一个文本域组件

tf = new JTextField(20);

add(tf);

//指定用来处理该按钮事件的监听器对象为JPanel本身

myListener = new MyKeyListener();

Listener(myListener);

}

private JTextField tf;

private MyKeyListener myListener;

}

class ButtonFrame extends JFrame{

public ButtonFrame() {

setTitle("键盘事件示例程序");

setSize(300, 200);

setLocation(100,100);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e)

{ (0);

}

});

Container ctPane = getContentPane();

(new ButtonPanel());

}

}

public class KeyEvt{

public static void main(String[] args) {

JFrame frame = new ButtonFrame();

ible(true);

}

}

///

简要说明

1. 程序建立了自己的键盘监听器MyKeyListener,定义了一个新方法

showKeyEventMsg用来在标准输出设备上显示有关的键盘信息。

2. 在面版ButtonPanel上建立文本框并加键盘监听器。把面版ButtonPanel

放到窗口ButtonFrame中。

鼠标监听器

鼠标监听器mouseListener监听鼠标事件MouseEvent。相应事件和处理方法如

下表:

鼠标事件 处理方法

MOUSE_CLICKED MouseClicked (MouseEvent) 鼠标点击(单或双)

MOUSE_PRESSED MousePressed (MouseEvent) 鼠标按下

MOUSE_RELEASED MouseReleased(MouseEvent) 鼠标松开

MOUSE_ENTERED MouseEntered (MouseEvent) 鼠标进入(某组件区域)

MOUSE_EXITED MouseExited (MouseEvent) 鼠标离开(某组件区域)

鼠标事件MouseEvent常用方法

int getClickCount() 得到点击次数1 OR 2;

int getX(), int getY() 得到鼠标的(象素)位置。

对于鼠标的移动和拖放,另外用鼠标运动监听器mouseMotionListener。因为许

多程序不需要监听鼠标运动,把两者分开可简化程序。有两个方法处理鼠标运动

事件:

MOUSE_MOVED MouseMoved (MouseEvent) 鼠标在移动

MOUSE_DRAGGED MouseDragged(MouseEvent) 鼠标被拖动

下面的例程演示简单的鼠标监听,并在屏幕上输出鼠标操作的信息。

例16 本例程演示鼠标监听器,鼠标点击和运动的监听。

///

//

import .*;

import .*;

import .*;

class MyPanel extends JPanel implements MouseMotionListener{

public MyPanel() {

addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent evt) {

if (ckCount() >= 2)

n("n双击鼠标");

int x = (); int y = ();

n("点击鼠标的位置nX:" + x + "ty: " + y);

}

});

addMouseMotionListener(this);

}

public void mouseMoved(MouseEvent evt){

n("n鼠标正在移动");

}

public void mouseDragged(MouseEvent evt){

n("n鼠标正在拖动");

}

}

class MyFrame extends JFrame{

public MyFrame(){

setTitle("鼠标事件示例程序");

setSize(300, 200);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

(0);

}

} );

Container contentPane = getContentPane();

(new MyPanel());

}

}

public class MouseEvt{

public static void main(String[] args){

JFrame frame = new MyFrame();

ible(true);

}

}

///

简要说明

在MyPanel的构建器中添加了鼠标适配器来监听鼠标点击数和位置。也添加了运

动监听器来处理移动和拖放操作。


发布者:admin,转转请注明出处:http://www.yc00.com/news/1718695437a2751900.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信