如何检查在Swing中是否按下鼠标按钮以及在Swing中按下哪个鼠标按钮

如何检查在Swing中是否按下鼠标按钮以及在Swing中按下哪个鼠标按钮

问题描述:

如何检查当前是否有任何鼠标按钮被按下,如果有,是哪一个?如何检查在Swing中是否按下鼠标按钮以及在Swing中按下哪个鼠标按钮

事情是我需要使用这种信息在MouseListener.mouseEntered()。我检查了MouseEvent,但我找不到能帮助我的方法。

getButton()方法似乎只在按钮状态发生变化时才返回值。

有没有办法找到这个,而不用手动跟踪这个方法,以某种方式与MouseListener.mousePressed()/mouseReleased()方法。

+0

如何在鼠标输入事件时获得鼠标按钮。如果按钮被点击,它将成为一个鼠标拖动事件。尝试'addMouseMotionListener'而不是'addMouseListener'。 – Braj

+1

@NicolásCarlo'getModifiers'会告诉你什么键在鼠标事件发生时是活动的(这是一个'InputEvent'的方法),'getButton'会告诉你哪些按钮在事件发生时是活动的,但是'SwingUtilities.isXxxButton'是一种安全的跨平台机制,通常推荐使用这种机制来确定哪些按钮实际上被按下了。 – MadProgrammer

如何检查当前是否有任何鼠标按钮被按下,如果是,哪一个是按下的?

大概你要取决于挤压,从而你可以做一些类似的按钮来调用特定代码:

if (SwingUtilities.isLeftMouseButton(...)) 
    // do something 

你可以通过查看How to write a Mouse Listener特别是JavaDocs for MouseEvent,该getButton方法开始。

然而,有一些需要考虑的,这是由SwingUtilities.isLeftMouseButton和等效方法痊愈了跨平台的考虑...

这将解决你的问题

long eventMask = AWTEvent.MOUSE_MOTION_EVENT_MASK + AWTEvent.MOUSE_EVENT_MASK; 

    Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() { 
     public void eventDispatched(AWTEvent e) { 
      System.out.println(e.paramString()+"-"+e.getSource()); 
     } 
    }, eventMask); 

这是一个Global Event Listeners

AWTEvent获取源代码和按钮,并执行任何您想要执行的操作。

+0

而按钮? – MadProgrammer

+0

这是'paramString' ** MOUSE_ENTERED,(470,268),绝对值(470,268),按钮= 0,clickCount = 0 **的值之一。现在我们可以获得鼠标事件类型,鼠标位置,按钮以及点击次数。 – Braj

+0

不要告诉我,告诉OP;) – MadProgrammer