如何使java.awt.Robot响应鼠标拖动事件?
我正在编写一个类,它允许其他计算机上的用户控制JPanel的内容,以便在共享显示系统中使用。Robot将允许我执行鼠标点击和键盘输入,但它没有如何使java.awt.Robot响应鼠标拖动事件?,java,mouseevent,awtrobot,Java,Mouseevent,Awtrobot,我正在编写一个类,它允许其他计算机上的用户控制JPanel的内容,以便在共享显示系统中使用。Robot将允许我执行鼠标点击和键盘输入,但它没有mouseDragged(MouseEvent evt)方法。我的客户端有clientmouseerelease(和按下)方法作为MouseAdapter侦听器的一部分,这些方法看起来像: private void clientMouseReleased(java.awt.event.MouseEvent evt) { try {
mouseDragged(MouseEvent evt)
方法。我的客户端有clientmouseerelease
(和按下
)方法作为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());
}
}
其中,remoteDesktop
是一个包含java.awt.Robot的类,它在客户端调用的方法中执行Robot.mouseMove
和Robot.mouseRelease
(或Robot.mousePress
)。我希望能够以相同的方式编写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());
}
}
好的,高层次的想法是,您需要将鼠标状态添加到您的程序中 您的
remoteDesktop
需要保持鼠标的状态
private boolean mouseDown = false;
然后,在鼠标按下并释放动作时,您需要适当设置标志
然后,需要在鼠标移动代码中添加逻辑
if (mouseDown)
handelDrag();
else
handleMove();
这是我将如何进行的一般想法。好吧,高层次的想法是您需要将鼠标状态添加到程序中 您的
remoteDesktop
需要保持鼠标的状态
private boolean mouseDown = false;
然后,在鼠标按下并释放动作时,您需要适当设置标志
然后,需要在鼠标移动代码中添加逻辑
if (mouseDown)
handelDrag();
else
handleMove();
这是我将如何处理这件事的一般想法