1

JUNGプログラムを使用してJavaでPluggableGraphMouseと2つのEditingGraphMousePluggingsを作成しました。モディファイアを左クリックと右クリックに設定すると、完全に正常に機能します。setModifiersコードは次のとおりです。

ovalMouse.setModifiers(MouseEvent.BUTTON1_MASK);
circleMouse.setModifiers(MouseEvent.BUTTON3_MASK);

しかし、私が望んでいるのは、左クリックで1つのことを実行し、Shift +左クリック(右クリックではなく)で別のことを実行することです。考えられるすべての組み合わせを試しましたが、うまく機能しないようです。これが私が試した、うまくいかない論理的な組み合わせのいくつかです:

//My logic here is Button1 AND Shift is down but this doesn't work
circleMouse.setModifiers(MouseEvent.BUTTON1_MASK & MouseEvent.SHIFT_DOWN_MASK);

// My logic here is Button1 AND Shift but this doesn't work either
circleMouse.setModifiers(MouseEvent.BUTTON1_MASK & MouseEvent.SHIFT_MASK);

// Also tried InputEvents but those didn't work either
circleMouse.setModifiers(InputEvent.BUTTON1_DOWN_MASK & InputEvent.SHIFT_DOWN_MASK);

誰かが正しい修飾子を知っているので、ovalMouseにはボタン1を使用し、circleMouseにはボタン1+シフトを使用できます。お知らせください。ありがとう。

4

1 に答える 1

1

JUNG2を実装する任意の xxxGraphMousePlugin マウス イベントでShift+Button3 をフィルタリングするにはMouseListener:

    System.out.println(circleMouse.getModifiers());
    if (( circleMouse.getModifiers() & (MouseEvent.SHIFT_MASK | MouseEvent.BUTTON3_MASK)) == (MouseEvent.SHIFT_MASK | MouseEvent.BUTTON3_MASK)){
        System.out.println(MouseEvent.getMouseModifiersText(circleMouse.getModifiers()));
    }

アップデート

BUTTON3したがって、マウス イベントをとの間で区別したい場合はSHIFT+BUTTON3、次のテストで表示されます。

graphMouse.add(new MyPopupGraphMousePlugin());

protected class MyPopupGraphMousePlugin extends AbstractPopupGraphMousePlugin
implements MouseListener {

    @Override
    protected void handlePopup(MouseEvent e) {
        boolean filtered1 = false;
        boolean filtered2 = false;

        System.out.println(e.getModifiers());
        if (( e.getModifiers() & (MouseEvent.SHIFT_MASK | MouseEvent.BUTTON3_MASK)) == (MouseEvent.SHIFT_MASK | MouseEvent.BUTTON3_MASK)){
            filtered1 = true;
        }
        if (( e.getModifiers() & (MouseEvent.BUTTON3_MASK)) == (MouseEvent.BUTTON3_MASK)){
            filtered2 = true;
        }

        if(filtered2 == true) {
            System.out.println("BUTTON3");
        }
        if(filtered1 == true) {
            System.out.println("SHIFT+BUTTON3");
            //or do something more useful like pop up a JPopupMenu
        }       
    }
}

上記のテストでは、次のようになりJUNG2ます。

  1. SHIFT キーを使用: SHIFT+BUTTON3(SHIFT キー + マウスの右クリック) を押すと、"BUTTON3" と "SHIFT+BUTTON3" の両方のメッセージが表示されます。

  2. SHIFT キーを除く: any key + BUTTON3(任意のキー + マウスの右クリック) を押すと、"BUTTON3" メッセージのみが表示されます。

于 2011-05-11T13:17:30.593 に答える