[英]How can java.awt.Robot be made to respond to mouse drag events?
I'm writing a class that will allow users on other computers to control the contents of a JPanel, for use in a shared display system. 我正在编写一个类,该类将允许其他计算机上的用户控制JPanel的内容,以在共享显示系统中使用。 java.awt.Robot will allow me to perform mouse clicks and keyboard input, but it does not have a
mouseDragged(MouseEvent evt)
method. java.awt.Robot将允许我执行鼠标单击和键盘输入,但是它没有
mouseDragged(MouseEvent evt)
方法。 My client has clientMouseReleased
(and Pressed
) methods as part of a MouseAdapter
listener that look like: 我的客户端将
clientMouseReleased
(和Pressed
)方法作为MouseAdapter
侦听器的一部分,如下所示:
private void clientMouseReleased(java.awt.event.MouseEvent evt)
{
try
{
switch (evt.getButton())
{
case 1:
remoteDesktop.mouseRelease(evt.getX(), evt.getY(), InputEvent.BUTTON1_MASK);
break;
case 2:
remoteDesktop.mouseRelease(evt.getX(), evt.getY(), InputEvent.BUTTON2_MASK);
break;
case 3:
remoteDesktop.mouseRelease(evt.getX(), evt.getY(), InputEvent.BUTTON3_MASK);
break;
}
}
catch (Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(this, e.getMessage());
}
}
Where the remoteDesktop
is a class containing a java.awt.Robot, and it executes a Robot.mouseMove
and Robot.mouseRelease
(or Robot.mousePress
) in the method the client calls. 其中
remoteDesktop
是一个包含java.awt.Robot的类,它使用客户端调用的方法执行Robot.mouseMove
和Robot.mouseRelease
(或Robot.mousePress
)。 I'd like to be able to write the mouseDragged
in the same way, ie, like this: 我希望能够以相同的方式编写
mouseDragged
,例如:
private void clientMouseDragged(java.awt.event.MouseEvent evt)
{
try
{
switch (evt.getButton())
{
case 1:
remoteDesktop.mouseDragged(evt.getX(), evt.getY(), InputEvent.BUTTON1_MASK);
break;
case 2:
remoteDesktop.mouseDragged(evt.getX(), evt.getY(), InputEvent.BUTTON2_MASK);
break;
case 3:
remoteDesktop.mouseDragged(evt.getX(), evt.getY(), InputEvent.BUTTON3_MASK);
break;
}
}
catch (Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(this, e.getMessage());
}
}
Well, the high level idea is that you need to add mouse state to your program. 好吧,高级的想法是您需要在程序中添加鼠标状态。
Your remoteDesktop
will need to keep the state of the mouse. 您的
remoteDesktop
将需要保留鼠标的状态。
private boolean mouseDown = false;
Then, on mouse press and release actions you need to set the flag appropriately. 然后,在按下鼠标并释放操作时,您需要适当地设置标志。
Then, you need to add logic in the mouse move code. 然后,您需要在鼠标移动代码中添加逻辑。
if (mouseDown)
handelDrag();
else
handleMove();
That's the general idea of how I would go about it. 那是我将如何处理的一般想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.