我正在编写一个类,允许其他计算机上的用户控制 JPanel 的内容,用于共享显示系统。 java.awt.Robot 将允许我执行鼠标点击和键盘输入,但它没有 mouseDragged(MouseEvent evt)
方法。我的客户端有 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());
}
}
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();
这就是我将如何处理它的一般想法。
关于java - 如何让 java.awt.Robot 响应鼠标拖动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585457/