2013-03-26 74 views
0

当我使用mouseListener时,我为鼠标中键敲响它不能正常响应我不知道为什么,但它看起来像我需要滚动,而要求发生事件发生 我的一些代码的一部分,如果有帮助java上的鼠标中键无法正常工作

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

} 
+2

看一看[哪个鼠标按钮(当然与你原来的switch语句上面写的其他代码的)是中间的一个?](http://stackoverflow.com/questions/8972267/which-mouse-button-is-the-middle-one)。 – 2013-03-26 20:29:56

回答

1

如果你看一下javadoxs为的MouseEvent,你可以看到,BUTTON1,BUTTON2和BUTTON3没有提到的左,中,右鼠标按钮。它取决于鼠标BUTTON 1,2和3的含义,所以可能会发生BUTTON2不涉及中间按钮。要查看鼠标中间的按钮是否被正确识别,请尝试以下操作:

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

现在按鼠标中键。如果控制台中没有输出,则鼠标没有中间按钮(或者没有正确识别)。如果有输出,则对应按钮(1 =按钮1 = 2 =按钮2,3 =按钮3)。如果输出为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"); 
    } 
}