当我使用 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/