0

mouseListener を使用し、マウスの中央ボタンを確認すると、適切に反応しません。理由はわかりませんが、クリックしながらスクロールして、イベントがコードの一部で発生するようにする必要があるようです。

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

}
4

1 に答える 1

1

MouseEvent の javadox を見ると、BUTTON1、BUTTON2、および BUTTON3 がマウスの左、中央、および右ボタンを参照していないことがわかります。BUTTON 1、2、および 3 が何を意味するかはマウスによって異なるため、BUTTON2 が中央のボタンを参照していない場合があります。マウスの中央ボタンが正しく認識されているかどうかを確認するには、次のことを試してください。

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ステートメントの上に書いた他のすべてのコードで)

于 2013-03-26T21:51:46.707 に答える