2

共有ディスプレイ システムで使用するために、他のコンピューターのユーザーが JPanel のコンテンツを制御できるようにするクラスを作成しています。java.awt.Robot を使用すると、マウス クリックとキーボード入力を実行できますが、メソッドがありませんmouseDragged(MouseEvent evt)。私のクライアントには、次のようなリスナーの一部としてclientMouseReleased(および) メソッドがあります。PressedMouseAdapter

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());
    }
}

はjava.awt.RobotremoteDesktopを含むクラスであり、クライアントが呼び出すメソッドでRobot.mouseMoveand 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());
    }
}
4

1 に答える 1

0

さて、高レベルのアイデアは、プログラムにマウスの状態を追加する必要があるということです。

マウスremoteDesktopの状態を維持する必要があります。

private boolean mouseDown = false;

次に、マウスを押して放すアクションで、フラグを適切に設定する必要があります。

次に、マウス移動コードにロジックを追加する必要があります。

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

それは私がそれについてどうやって行くかという一般的な考えです。

于 2010-08-27T15:18:52.610 に答える