Tracking wird die Bewegung der Maus in java
Habe ich gearbeitet, auf eine grundlegende tower-defense-Spiel, und war auf der Suche, um zu verfolgen die Bewegungen der Maus. Ich brauche es nicht zu verfolgen, die Bewegung der Maus beim ziehen, aber nur, wenn die Maus über den Bildschirm, so dass der Benutzer sehen kann, wo der Turm wird aufgestellt werden. Ich habe erweiterte MouseAdapter zu machen, mit einem controller und klicken um einen Turm funktioniert, aber ich kann nicht herausfinden, wie verfolgen Sie die Bewegung der Maus sonst. Sollte überwiegendes B. mousemoved, dies zu tun? Ich habe versucht, mit wenig Erfolg. Nachdem man eine print-Anweisung, die ich sehen konnte, war das Ereignis nicht auslösen. Dies ist, was ich derzeit habe:
public class MouseController extends MouseAdapter {
private final Board my_board;
private final int square_size;
public MouseController(final Board the_board, final int the_square_size) {
my_board = the_board;
square_size = square_size;
}
@Override
public void mouseClicked(final MouseEvent e) {
super.mouseClicked(e);
Point p = e.getPoint();
my_board.placeTower(p.x / square_size, p.y / square_size - 1);
}
@Override
public void mouseMoved(final MouseEvent e) {
super.mouseMoved(e);
Point p = e.getPoint();
my_board.placeCursor(p.x / square_size, p.y / square_size - 1);
}
}
Jede Hilfe ist willkommen. Danke!
- versuchen Sie final MouseEvent e. Es soll einfach MouseEvent e
- sollte das nicht einen Unterschied machen, in der Tat, es kann argumentiert werden, dass es mehr richtige zu haben, final) wie die Referenz des Objekts ändert sich nie
- Ich war eigentlich gesagt, von einem meiner Professoren, die letzten sollten fast immer verwendet werden, auf die Parameter der Methode. Unabhängig davon, ist es war, dass ich nicht fügen Sie die controller sowohl mouseListener als auch als MouseMotionListener. Ich habe diesen Fehler gemacht, vor. Trotzdem danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein offizielles tutorial, genau das zu tun, was Sie zu tun versuchen: http://docs.oracle.com/javase/tutorial/uiswing/events/mousemotionlistener.html
Hier ist der relevante Codeausschnitt inline:
Wie fügen Sie Ihre MouseController zu Ihrem code? Ich denke, MouseAdaptor implementiert MouseListener und MouseMotionListener. Stellen Sie sicher, dass auch call
component.addMouseMotionListener(myMouseController)
und nicht nurcomponent.addMouseListener(myMouseController)
.Wenn nur
mouseClicked
heißt aber nichtmouseMoved
, es klingt wie Sie nur Ihre Maus, controller als Maus-listener, aber noch nicht als Mausbewegung Zuhörer.