java - java 上的鼠标中键无法正常工作

标签 java mouse-listeners

当我使用 mouseListener 并检查鼠标中键时,它没有正确 react ,我不知道为什么,但看起来我需要在单击时滚动才能发生事件 我的代码的某些部分(如果有帮助)

public void mouseClicked(MouseEvent e) {
    if(new Rectangle(0,0,1274,30).contains(Screen.mse)){
        TopMenu.click();
    }else if(new Rectangle(0,31,1100,549).contains(Screen.mse)){
        Map.cliked(e.getButton(),0);
        System.out.println("mouse:"+e.getButton());
    }else if(new Rectangle(1100,30,174,550).contains(Screen.mse)){
        //cliked ModeMenu
    }else if(new Rectangle(0,580,1100,164).contains(Screen.mse)){
        //cliked ToolsMenu
    }else{
        //cliked mode change
    }

    switch(e.getModifiers()) {
      case InputEvent.BUTTON1_MASK: {
        System.out.println("That's the LEFT button");     
        break;
        }
      case InputEvent.BUTTON2_MASK: {
        System.out.println("That's the MIDDLE button");     
        break;
        }
      case InputEvent.BUTTON3_MASK: {
        System.out.println("That's the RIGHT button");     
        break;
        }
      }

}

最佳答案

如果你查看MouseEvent的javadoxs,你会发现BUTTON1、BUTTON2和BUTTON3并不是指鼠标左键、中键和右键。 BUTTON 1,2 和 3 的含义取决于鼠标,因此 BUTTON2 可能不指代中间的 Button。要查看是否正确识别鼠标的中间按钮,请尝试以下操作:

public void mouseClicked(MouseEvent e){
System.out.println(e.getButton());
}

现在按鼠标中键。如果控制台没有输出,则说明您的鼠标没有中键(或者无法正确识别)。如果有输出,则对应按钮(1=BUTTON1,2=BUTTON2,3=BUTTON3)。如果输出为0,则按钮为MouseEvent.NOBUTTON,这种情况不太可能发生。

另一件事:尝试使用 SwingUtilities.isMiddleButton(MouseEvent e)。这可能会解决鼠标的一些问题。如果这样做,请将 mouseClicked() 方法更改为

public void mouseClicked(MouseEvent e)
{
    if(SwingUtilities.isLeftMouseButton(e))
    {
        System.out.println("That's the LEFT button"); 
    }
    else if(SwingUtilities.isMiddleMouseButton(e))
    {
        System.out.println("That's the MIDDLE button"); 
    }
    else if(SwingUtilities.isRightMouseButton(e))
    {
        System.out.println("That's the RIGHT button"); 
    }
}

(当然还有您在原始 switch 语句上方编写的所有其他代码)

关于java - java 上的鼠标中键无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646613/

相关文章:

java - 如何使用 getParent() 获取被点击组件的父对象?

java - 拖动未修饰的 JFrame 并调整其大小

java - Springfox/Swagger 中用于返回 ObjectNode 的自定义 ResponseModel

java - 使用 modeshape 在 JCR 存储库中递归移动节点

java - UnsatisfiedLinkError : Native Library sunmscapi. dll 已加载到另一个类加载器中

java - 如何通过鼠标监听器获取Arraylist的索引?

java - 如何用鼠标滚轮移动JSlider

java - 鼠标定位和图形绘制

java - Android 4.4 hce(基于主机的卡模拟) "processCommandApdu"apdu 长度

java - Java Web Start 是否提供默认程序文件夹?