私は MineSweeper ゲームを書きました。その中で、ボタンには2つのリスナーがあります。
class SampleClass extends MouseAdapter implements ActionListener {
//Some code here
public void actionPerformed(ActionEvent event){ // Buttons listener..
System.out.println("I came here to actionPerformed.");
//Some Code
}
public void mouseClicked(MouseEvent event) { //Mouse listener..
System.out.println("I came here to MouseClicked.");
//Some Code
if(event.getButton() == MouseEvent.BUTTON3){..}//If Right Mouse Button Is Clicked!!
else if(event.getButton() == MouseEvent.BUTTON1){..}//If Left Mouse Button Is Clicked!!
}
}
私が観察したのは、マウスの左ボタンがクリックされるたびに、唯一の actionPerformed が呼び出され、 mouseClicked ではありません。しかし、マウスの右ボタンをクリックすると、mouseClicked が呼び出されます (通常の場合と同様に、actionPerformed は呼び出されません)。
しかし、ActionListener を削除すると、マウスの左ボタンと右ボタンの両方のクリックでmouseClicked が呼び出され、完全に正常に動作します。
私は、2 つのリスナーは 2 つの独立したスレッドであり、イベントをリッスンしていると思いました。