Как сделать java.awt.Robot для реагирования на события перетаскивания мышью? - PullRequest
2 голосов
/ 27 августа 2010

Я пишу класс, который позволит пользователям на других компьютерах контролировать содержимое JPanel для использования в системе общего отображения.java.awt.Robot позволит мне выполнять щелчки мышью и ввод с клавиатуры, но у него нет метода mouseDragged(MouseEvent evt).Мой клиент имеет clientMouseReleasedPressed) методы как часть 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());
    }
}

1 Ответ

0 голосов
/ 27 августа 2010

Что ж, идея высокого уровня в том, что вам нужно добавить состояние мыши в вашу программу.

Ваш remoteDesktop должен будет поддерживать состояние мыши.

private boolean mouseDown = false;

Затем, при нажатии и отпускании мыши, вы должны установить соответствующий флаг.

Затем вам нужно добавить логику в код перемещения мыши.

if (mouseDown) 
    handelDrag();
else 
    handleMove();

Это общее представление о том, как мне поступить.

...