gpt4 book ai didi

java - JUNK 和 Java 的鼠标事件

转载 作者:太空宇宙 更新时间:2023-11-04 08:37:52 25 4
gpt4 key购买 nike

我用 JUNG 程序在 Java 中制作了一个 PluggableGraphMouse 和 2 个 EditingGraphMousePluggings。如果我将修饰符设置为左键单击和右键单击,则效果非常好,这是 setModifiers 代码:

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

但是,我想要的是让左键单击执行一件事,而 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);

如果有人知道正确的修饰符是什么,以便我可以使用按钮 1 来表示 ovalMouse,使用按钮 1 + Shift 来表示 CircleMouse,请告诉我。谢谢。

最佳答案

要在任何实现 MouseListenerJUNG2 的 xxxGraphMousePlugin 鼠标事件中过滤 Shift+Button3:

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

更新

因此,如果您想区分 BUTTON3SHIFT+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键除外:按任意键+BUTTON3(任意键+鼠标右键)只会显示“BUTTON3”消息

关于java - JUNK 和 Java 的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5958622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com