java鼠标键盘事件及实例Word文件下载.docx

上传人:b****1 文档编号:3066549 上传时间:2023-05-01 格式:DOCX 页数:16 大小:19.80KB
下载 相关 举报
java鼠标键盘事件及实例Word文件下载.docx_第1页
第1页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第2页
第2页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第3页
第3页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第4页
第4页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第5页
第5页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第6页
第6页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第7页
第7页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第8页
第8页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第9页
第9页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第10页
第10页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第11页
第11页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第12页
第12页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第13页
第13页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第14页
第14页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第15页
第15页 / 共16页
java鼠标键盘事件及实例Word文件下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

java鼠标键盘事件及实例Word文件下载.docx

《java鼠标键盘事件及实例Word文件下载.docx》由会员分享,可在线阅读,更多相关《java鼠标键盘事件及实例Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。

java鼠标键盘事件及实例Word文件下载.docx

MouseDragged(MouseEvent) 

鼠标被拖动

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

例2

下面是讨论MouseMotionListener的使用时机,它提供的下面的两个方法,可让你随时掌握鼠标的坐标,并处理拖曳鼠标的操作。

MouseMotionListenermouseDragged(MouseEvente)

mouseMoved(MouseEvente)

-----------------------------------------------------------------------

下面的范例让你知道鼠标在JFrame上的坐标,并拖曳出直线来。

MouseDemo3.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

/*为了达到画线的功能,我们分别implementsMouseListener与MouseMotionListener.

*/

publicclassMouseDemo3extendsJFrameimplementsMouseListener,MouseMotionListener{

intflag;

//flag=1代表MouseMoved,flag=2代表MouseDragged

intx=0;

inty=0;

intstartx,starty,endx,endy;

//起始坐标与终点坐标

publicMouseDemo3(){

ContainercontentPane=getContentPane();

contentPane.addMouseListener(this);

contentPane.addMouseMotionListener(this);

setSize(300,300);

show();

addWindowListener(

newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

}

);

}

/*由mousePressed(),mouseReleased()取得示拖曳的开始与结束坐标*/

publicvoidmousePressed(MouseEvente){

startx=e.getX();

starty=e.getY();

publicvoidmouseReleased(MouseEvente){

endx=e.getX();

endy=e.getY();

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmouseClicked(MouseEvente){}

/*mouseMoved(),mouseDragged()取得鼠标移动的每一个坐标,并调用repaint()方法*/

publicvoidmouseMoved(MouseEvente){

flag=1;

x=e.getX();

y=e.getY();

repaint();

publicvoidmouseDragged(MouseEvente){

flag=2;

publicvoidupdate(Graphicsg){

g.setColor(this.getBackground());

g.fillRect(0,0,getWidth(),getHeight());

paint(g);

publicvoidpaint(Graphicsg){

g.setColor(Color.black);

if(flag==1){

g.drawString("

鼠标坐标:

("

+x+"

"

+y+"

;

)"

10,50);

g.drawLine(startx,starty,endx,endy);

if(flag==2){

拖曳鼠标价坐标:

g.drawLine(startx,starty,x,y);

publicstaticvoidmain(String[]args){

newMouseDemo3();

例3

实现一个简单的鼠标控制程序MouseController。

程序功能很简单:

随机移动鼠标并点击左键。

代码如下:

importjava.awt.AWTException;

importjava.awt.Dimension;

importjava.awt.Robot;

importjava.awt.Toolkit;

importjava.awt.event.InputEvent;

importjava.util.Random;

/**

*

*/

*@Createdate2007-11-6

publicclassMouseControllerimplementsRunnable{

privateDimensiondim;

privateRandomrand;

privateRobotrobot;

privatevolatilebooleanstop=false;

publicMouseController(){

dim=Toolkit.getDefaultToolkit().getScreenSize();

rand=newRandom();

try{

robot=newRobot();

}catch(AWTExceptionex){

ex.printStackTrace();

}

publicvoidrun(){

while(!

stop){

intx=rand.nextInt(dim.width);

inty=rand.nextInt(dim.height);

robot.mouseMove(x,y);

robot.mousePress(InputEvent.BUTTON1_MASK);

Thread.sleep(2000);

}catch(InterruptedExceptionex){

}

publicsynchronizedvoidstop(){

stop=true;

publicstaticvoidmain(String[]args){

MouseControllermc=newMouseController();

Thre

$False$

admcThread=newThread(mc);

System.out.println("

MouseControllerstart"

mcThread.start();

Thread.sleep(60000);

mc.stop();

MouseControllerstoped"

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

///

//MouseEvt.java

classMyPanelextendsJPanelimplementsMouseMotionListener{

publicMyPanel(){

addMouseListener(newMouseAdapter(){

publicvoidmouseClicked(MouseEventevt){

if(evt.getClickCount()>

=2)

\n双击鼠标"

intx=evt.getX();

inty=evt.getY();

点击鼠标的位置\nX:

"

+x+"

\ty:

"

+y);

});

addMouseMotionListener(this);

publicvoidmouseMoved(MouseEventevt){

\n鼠标正在移动"

publicvoidmouseDragged(MouseEventevt){

\n鼠标正在拖动"

classMyFrameextendsJFrame{

publicMyFrame(){

setTitle("

鼠标事件示例程序"

setSize(300,200);

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

});

ContainercontentPane=getContentPane();

contentPane.add(newMyPanel());

publicclassMouseEvt{

publicstaticvoidmain(String[]args){

JFrameframe=newMyFrame();

frame.setVisible(true);

///

简要说明

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

也添加了运动监听器来处理移动和拖放操作。

鼠标双击事件

鼠标的单双击事件在很多时候对我们帮助很大,但是在JAVA中却没有给出鼠标双击事件.我们可以通过事件源e.getClickCount()==2来判断鼠标点击次数来实现鼠标双击事件,例如:

publicclassMyMouseListener

extendsjava.awt.event.MouseAdapter...{

publicvoidmouseClicked(MouseEvente)...{

clicked"

intclickTimes=e.getClickCount();

if(clickTimes==2)...{

DoublcClicked!

但是这样并没有达到我们的要求,因为在每次触发双击事件的同时会触发单击事件.所以我们试图改进以上方案,不使用系统提供的e.getClickCount()方法.可以考虑当第一次单击鼠标的时候让鼠标单击事件延时0.2秒执行,而在这段时间里等待第二次单击,如果有第二次单击,那么我们执行双击事件任务,取消单击任务;

如果在这段时间没有等到再次单击,那么执行单击任务.

下面是用定时器延时单击事件实现鼠标双击事件,单击和双击事件互不影响!

publicclassMyMouseListener

privatestaticbooleanflag=false;

//用来判断是否已经执行双击事件

privatestaticintclickNum=0;

//用来判断是否该执行双击事件

finalMouseEventme=e;

//事件源

this.flag=false;

//每次点击鼠标初始化双击事件执行标志为false

if(this.clickNum==1)...{//当clickNum==1时执行双击事件

this.mouseDoubleClicked(me);

//执行双击事件

this.clickNum=0;

//初始化双击事件执行标志为0

this.flag=true;

//双击事件已执行,事件标志为true

return;

//定义定时器

java.util.Timertimer=newjava.util.Timer();

//定时器开始执行,延时0.2秒后确定是否执行单击事件

timer.schedule(newjava.util.TimerTask()...{

privateintn=0;

//记录定时器执行次数

publicvoidrun()...{

if(MyMouseListener.flag)...{//如果双击事件已经执行,那么直接取消单击执行

n=0;

MyMouseListener.clickNum=0;

this.cancel();

if(n==1)...{//定时器等待0.2秒后,双击事件仍未发生,执行单击事件

mouseSingleClicked(me);

//执行单击事件

MyMouseListener.flag=true;

clickNum++;

n++;

},newjava.util.Date(),500);

/***//**

*鼠标单击事件

*@parame事件源参数

publicvoidmouseSingleClicked(MouseEvente)...{

SingleClicked!

*鼠标双击事件

publicvoidmouseDoubleClicked(MouseEvente)...{

//Test.java

publicclassTestextendsJFrame{

publicTest(){

super("

test"

init();

this.setSize(800,600);

this.setVisible(true);

privatevoidinit(){

JButtonb=newJButton("

button"

b.setBounds(50,50,100,30);

this.getContentPane().setLayout(null);

this.getContentPane().add(b);

b.addMouseListener(newMyMouseListener());

publicstaticvoidmain(Stringargs[]){

newTest();

键盘监听器

键盘监听器KeyListener用来监听键盘事件。

键盘事件有三种:

KEY_PRESSED键按下了,KEY_RELEASED键松开了,KEY_TYPED键按过了。

每个键都有一个键码,普通键的键码就是ASCII码。

键码可通过intgetKeyCode()方法获得。

Java设置了一种“虚拟键码”(VirtualKeyCode),用“VK_”作为前缀,例如VK_G。

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

键码

含义

VK_LEFT/VK_RIGHT

左右方向键

VK_CONTROL

Ctrl键

VK_KP_UP

小键盘向上

VK_ATL

Alt键

VK_PAUSE

暂停键

VK_SHIFT

Shift键

VK_NUMBER0

小键盘数字0

VK_F1

功能键F1

VK_0

数字键0

VK_B

字母键B 

虚拟键码对应的是键位,不区分大小写。

要想知道大小写还必须查看修饰键(modifierkey)。

这由输入事件InputEvent的getModifere()方法得到,把返回值与常量SHIFT_MASK,CONTROL_MASK,ALT_MASK比较,用以判定哪个修饰键处于“同时按下”状态。

监听器KeyListener有三个方法keyPressed(KeyEventevt),keyReleased(KeyEventevt),keyTyped(KeyEventevt),分别用于相应事件发生后的处理。

下面的例程中给自己的键盘监听器建立了showKeyEventMsg方法来显示按键信息。

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

用isShiftDown()判断shift键是否被按下等。

当按下Control键时getKeyText返回的是“ctrl"

,Alt和Shift也类似。

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

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

//KeyEvt.java

classMyKeyListenerimplementsKeyListener{

publicvoidkeyPressed(KeyEventevt){

\n按键被按下"

showKeyEventMsg(evt);

publicvoidkeyReleased(KeyEventevt){}

publicvoidkeyTyped(KeyEventevt){}

privatevoidshowKeyEventMsg(KeyEventevt){//显示按键事件信息

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

intcode=evt.getKeyCode();

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

charc=evt.getKeyChar();

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

StringszText=evt.getKeyText(code);

if(code!

=KeyEvent.VK_UNDEFINED)

\n按键对应的整型数:

+code);

if(c!

=KeyEvent.CHAR_UNDEFINED)

\n与按键相联系的字符:

+c);

if(evt.isShiftDown())

\n按键Shift被按下"

\n按键本身的字符串:

+szText);

classButtonPanelextendsJPanel{

 

publicButtonPanel(){

//新建一个文本域组件

tf=newJTextField(20);

add(tf);

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

myListener=newMyKeyListener();

tf.addKeyListener(myListener);

privateJTextFieldtf;

privateMyKeyListenermyListener;

classButtonFrameextendsJFrame{

publicButtonFrame(){

键盘事件示例程序"

setLocation(100,100);

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2