Hallo Community,
ich habe mal da eine blöde Frage. Ich habe folgenden einfachen Code:
Hier wird ein Kreis mit einem Radius von 30 erstellt. Dieser wird in eine Group und die Group in die Scene eingepakkt. Die Scene regiert mit setOnMouseMoved auf Mausbewegungen, in dem es auf MouseEvent-Daten zurückgreift. Der Kreis folgt der Mausbewegung innerhalb der Scene. Soweit so gut. Das Programm funktioniert. Ich habe da nur eine kleine Verständnisfrage. Mit dem Aufruf der Scene-Funktion setOnMouseMoved wird eine anonyme Klasse erstellt, die das Interface EventHandler implementiert und mit MouseEvent parametisiert ist. Welche Klasse erstellt das MouseEvent-Objekt? Ich sehe nirgendswo den Aufruf von "new MouseEvent()".
Auch wenn ich eine eigene Klasse mache wie folgt:
Das funktioniert auch. Aber auch hier wird nirgendswo "new MouseEvent" gemacht. Ich habe etwas ganz banales nicht verstanden oder vergessen. Bitte helft mir gerade die Funktionsweise richtig zu verstehen.
ich habe mal da eine blöde Frage. Ich habe folgenden einfachen Code:
Java:
public class MeinMausBewegtEvent extends Application {
@Override
public void start(Stage primaryStage) {
Circle kreis = new Circle(30);
Group gruppe = new Group();
Scene sc = new Scene(gruppe);
sc.setOnMouseMoved(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
kreis.setCenterX(event.getX());
kreis.setCenterY(event.getY());
}
});
gruppe.getChildren().add(kreis);
primaryStage.setScene(sc);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Hier wird ein Kreis mit einem Radius von 30 erstellt. Dieser wird in eine Group und die Group in die Scene eingepakkt. Die Scene regiert mit setOnMouseMoved auf Mausbewegungen, in dem es auf MouseEvent-Daten zurückgreift. Der Kreis folgt der Mausbewegung innerhalb der Scene. Soweit so gut. Das Programm funktioniert. Ich habe da nur eine kleine Verständnisfrage. Mit dem Aufruf der Scene-Funktion setOnMouseMoved wird eine anonyme Klasse erstellt, die das Interface EventHandler implementiert und mit MouseEvent parametisiert ist. Welche Klasse erstellt das MouseEvent-Objekt? Ich sehe nirgendswo den Aufruf von "new MouseEvent()".
Auch wenn ich eine eigene Klasse mache wie folgt:
Java:
public class MyEventHandler implements EventHandler<RotateEvent>{
Circle c;
public MyEventHandler(Circle c) {
this.c = c;
}
@Override
public void handle(MouseEvent event) {
c.setCenterX(event.getX());
c.setCenterY(event.getY());
}
}
Das funktioniert auch. Aber auch hier wird nirgendswo "new MouseEvent" gemacht. Ich habe etwas ganz banales nicht verstanden oder vergessen. Bitte helft mir gerade die Funktionsweise richtig zu verstehen.