如何使 java.awt.Robot 响应鼠标拖动事件?
我正在编写一个类,允许其他计算机上的用户控制 JPanel 的内容,以便在共享显示系统中使用。 java.awt.Robot 将允许我执行鼠标单击和键盘输入,但它没有 mouseDragged(MouseEvent evt)
方法。 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());
}
}
我的客户端有 clientMouseReleased
(和 Pressed
)方法作为是一个包含 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());
}
}
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. java.awt.Robot will allow me to perform mouse clicks and keyboard input, but it does not have a mouseDragged(MouseEvent evt)
method. My client has clientMouseReleased
(and Pressed
) methods as part of a MouseAdapter
listener that look like:
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. I'd like to be able to write the mouseDragged
in the same way, i.e., like this:
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());
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
嗯,高层次的想法是您需要将鼠标状态添加到您的程序中。
您的
remoteDesktop
将需要保持鼠标的状态。然后,在按下和释放鼠标操作时,您需要适当地设置标志。
然后,您需要在鼠标移动代码中添加逻辑。
这就是我将如何去做的总体想法。
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.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.
That's the general idea of how I would go about it.