Java - mouseMoved() event handling in Swing
21,982
Solution 1
If you want to receive mouseMoved
and mouseDragged
events, you need to also register your listener as a MouseMotionListener
.
MouseAdapter adapter = ...
JFrame frame = ...
frame.addMouseListener(adapter);
frame.addMouseMotionListener(adapter);
Solution 2
Maybe you should try implementing MouseMotionListener
and with MouseListener
too ?
Comments
-
mc.suchecki almost 2 years
I want to listen for mouse movements and clicks in my JFrame. To do this, I've added a MouseListener implemented like this: (whole code of View class is at https://gist.github.com/2837224, Board class is at https://gist.github.com/2837231)
class BattleshipsFrame extends JFrame { private final Board playerBoard, opponentBoard; private View view; /** Main window constructor. */ BattleshipsFrame() { ... ... ... //creating and displaying boards 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); ... ... ... } /** Listener responsible for handling mouse events on player board */ 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) { //TODO System.out.println("Mouse movement detected! Actual mouse position is: " + event.getX()+ "," + event.getY() + "."); } @Override public void mouseDragged(MouseEvent event) { //TODO System.out.println("Mouse movement detected! Actual mouse position is: " + event.getX()+ "," + event.getY() + "."); } }
Funny thing is that mousePressed() is working well, but the other two are not (nothing shows on console while moving the mouse). Anybody could tell me what am I doing wrong? Thanks in advance!