I want to listen for mouse movements and clicks in my JFrame. To do this, I added a MouseListener implemented as follows: (all the code for the View class is at https://gist.github.com/2837224 , the Board class is at https://gist.github.com/2837231 )
class BattleshipsFrame extends JFrame {
private final Board playerBoard, opponentBoard;
private View view;
BattleshipsFrame() {
...
...
...
playerBoard = new Board();
opponentBoard = new Board();
PlayerBoardListener mouseListener = new PlayerBoardListener();
this.addMouseListener(mouseListener);
playerBoard.addMouseListener(mouseListener);
opponentBoard.addMouseListener(new OpponentBoardListener());
boards.add(playerBoard);
boards.add(opponentBoard);
...
...
...
}
private class PlayerBoardListener extends MouseAdapter {
@Override public void mousePressed(MouseEvent event) {
try {
if(event.getButton() == MouseEvent.BUTTON1 && controllerConnection != null)
controllerConnection.sendShipPlacedEvent(event.getX()/40, event.getY()/40, ShipType.EMPTY);
} catch(Exception e) {
e.printStackTrace();
}
}
@Override public void mouseMoved(MouseEvent event) {
System.out.println("Mouse movement detected! Actual mouse position is: " + event.getX()+ "," + event.getY() + ".");
}
@Override public void mouseDragged(MouseEvent event) {
System.out.println("Mouse movement detected! Actual mouse position is: " + event.getX()+ "," + event.getY() + ".");
}
}
It's funny that mousePressed () works well, but the other two are not displayed (nothing is displayed on the console). Can anyone tell me what I'm doing wrong? Thanks in advance!
source
share