您的位置:程序门 -> java ->



在swing中怎样才能把鼠标的活动范围限制在某个窗体内


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


在swing中怎样才能把鼠标的活动范围限制在某个窗体内[无满意答案结贴,结贴人:lyshine66]
发表于:2007-10-23 07:40:26 楼主
初学java   swing,做了一个程序想把鼠标限制在某个窗体内,但不知道具体怎么实施,请高手指教!
发表于:2007-10-23 16:08:441楼 得分:0
我写了一段不是很完美的代码,参考一下吧^o^
java code
package com.ddpie; import java.awt.awtexception; import java.awt.graphicsdevice; import java.awt.graphicsenvironment; import java.awt.robot; import java.awt.event.mouseevent; import java.awt.event.mousemotionlistener; import javax.swing.jframe; public class testcursorframe { public static void main(string[] args) throws awtexception{ final int width = 300; final int hight = 200; final jframe frame = new jframe(); frame.setsize(width, hight); frame.setlocation(200, 200); frame.setundecorated(true); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setvisible(true); graphicsenvironment env = graphicsenvironment.getlocalgraphicsenvironment(); graphicsdevice screen = env.getdefaultscreendevice(); final robot robot = new robot(screen); frame.addmousemotionlistener(new mousemotionlistener(){ public void mousedragged(mouseevent e) { resetcursorpos(e); } public void mousemoved(mouseevent e) { resetcursorpos(e); } private void resetcursorpos(mouseevent e){ int curx = e.getx()+frame.getx(); int cury = e.gety()+frame.gety(); int frameleft = frame.getx()+20; int frameright = frame.getx()+frame.getwidth()-20; int frameup = frame.gety()+20; int framedown = frame.gety()+frame.getheight()-20; int x = curx; int y = cury; if(curx<frameleft){ x = frameleft; } if(curx>frameright){ x = frameright; } if(cury<frameup){ y = frameup; } if(cury>framedown){ y = framedown; } if(x!=curx || y!=cury) robot.mousemove(x, y); } }); } }


快速检索

最新资讯
热门点击