java – 将鼠标保持在Ellipse2D中
发布时间:2020-12-15 02:35:57 所属栏目:Java 来源:网络整理
导读:我知道如何将我的鼠标(我的g.draw(mouseX,mouseY)光标)保持在Ellipse2D / Shape中… @Overridepublic void mouseMoved(MouseEvent e) { int x = e.getX(),y = e.getY(); if(shape.contains(x,y)) { mouseMoveX = e.getX(); mouseMoveY = e.getY(); }} …但是
我知道如何将我的鼠标(我的g.draw(mouseX,mouseY)光标)保持在Ellipse2D / Shape中…
@Override public void mouseMoved(MouseEvent e) { int x = e.getX(),y = e.getY(); if(shape.contains(x,y)) { mouseMoveX = e.getX(); mouseMoveY = e.getY(); } } …但是当鼠标离开所述形状时(直到它返回),这将完全锁定运动. IE即使实际光标移动,它仍保持在相同的位置.我希望鼠标能够在椭圆周围移动,即使实际光标已经出来.你们中的许多人可能仍然感到困惑,对不起,如果需要更多的解释,我很乐意帮忙.另外,这里的第一个问题,如果我违反任何规则,请告诉我!谢谢. PS:对于任何迟到的回复,目前在拨号上网:( 解决方法
最简单的方法是使用
java.awt.Robot 类,它允许您直接控制鼠标和键盘:
import java.awt.Robot; ... Robot robot = new Robot(<your GraphicsDevice>); ... @Override public void mouseMoved(MouseEvent e) { int x = e.getX(),y)) { mouseMoveX = e.getX(); mouseMoveY = e.getY(); } else { robot.mouseMove(mouseMoveX,mouseMoveY); // Assuming these are the previous coordinates. } } 编辑:好的,试试这个: @Override public void mouseMoved(MouseEvent e) { int x = e.getX(),y = e.getY(); if (shape.contains(x,y)) { mouseMoveX = e.getX(); mouseMoveY = e.getY(); } else { // get angle of rotation double r = Math.atan2(y-shape.getCenterY(),x-shape.getCenterX()); mouseMoveX = (int) (shape.getWidth()/2 * Math.cos(r) + shape.getCenterX()); mouseMoveY = (int) (shape.getHeight()/2 * Math.sin(r) + shape.getCenterY()); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |