Hallo,
ich habe folgendes Problem: ich möchte mittels eines EventHandlers registrieren wo die Maus ist und was sie macht. Leider funktioniert es nicht so wie gedacht. Wenn ich es auf die Scene anwende, dann passiert nichts. Wende ich es aber auf die Group (mittels this.) an, dann erkennt er die Maus, wenn ich auf den dargestellten Figuren bin, aber auch nur da. Am Ende soll ich mittels der Maus eine neue Figur zeichnen können, aber dafür muss sie erstmal erkannt werden. Vielen Dank!
[CODE lang="java" title="Mouse"]package view;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.shape.*;
import model.Color;
import model.Ellipse;
import model.Figure;
import model.Rectangle;
import viewmodel.CADViewModel;
import viewmodel.IOFigureViewModel;
import viewmodel.ViewModel;
public class CADView extends Group implements IView {
private double height;
private double width;
private IView parent;
private CADViewModel vm;
private Pane pane;
public double x0,x1,y0,y1;
private EventHandler<MouseEvent> handler = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent me) {
if (MouseEvent.MOUSE_PRESSED != null) vm.mousePressed(me);
}
// TODO Auto-generated method stub
};
public CADView (ViewModel vm, IView parent) {
this.vm = (CADViewModel)vm;
this.parent = parent;
Scene scene = new Scene(this,1000,500);
Figure r = new Ellipse (200, 200, 100, 30, Color.RED, Color.BLACK);
Figure e = new Ellipse (900, 500, 10, 150, Color.GREEN, Color.BLUE);
Figure r1 = new Rectangle (250, 250, 50, 80, Color.CYAN, Color.CYAN);
this.getChildren().add(r.getShape(r));
this.getChildren().add(e.getShape(e));
this.getChildren().add(r1.getShape(r1));
scene.addEventHandler(MouseEvent.ANY,handler); // hier muss irgendwo der Fehler liegen.
// this.addEventHandler(MouseEvent.ANY, handler); hier zeigt er mir die Position und Aktion der Maus, wenn sie auf einer Ellipse/Rectangle ist[/CODE]
ich habe folgendes Problem: ich möchte mittels eines EventHandlers registrieren wo die Maus ist und was sie macht. Leider funktioniert es nicht so wie gedacht. Wenn ich es auf die Scene anwende, dann passiert nichts. Wende ich es aber auf die Group (mittels this.) an, dann erkennt er die Maus, wenn ich auf den dargestellten Figuren bin, aber auch nur da. Am Ende soll ich mittels der Maus eine neue Figur zeichnen können, aber dafür muss sie erstmal erkannt werden. Vielen Dank!
[CODE lang="java" title="Mouse"]package view;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.shape.*;
import model.Color;
import model.Ellipse;
import model.Figure;
import model.Rectangle;
import viewmodel.CADViewModel;
import viewmodel.IOFigureViewModel;
import viewmodel.ViewModel;
public class CADView extends Group implements IView {
private double height;
private double width;
private IView parent;
private CADViewModel vm;
private Pane pane;
public double x0,x1,y0,y1;
private EventHandler<MouseEvent> handler = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent me) {
if (MouseEvent.MOUSE_PRESSED != null) vm.mousePressed(me);
}
// TODO Auto-generated method stub
};
public CADView (ViewModel vm, IView parent) {
this.vm = (CADViewModel)vm;
this.parent = parent;
Scene scene = new Scene(this,1000,500);
Figure r = new Ellipse (200, 200, 100, 30, Color.RED, Color.BLACK);
Figure e = new Ellipse (900, 500, 10, 150, Color.GREEN, Color.BLUE);
Figure r1 = new Rectangle (250, 250, 50, 80, Color.CYAN, Color.CYAN);
this.getChildren().add(r.getShape(r));
this.getChildren().add(e.getShape(e));
this.getChildren().add(r1.getShape(r1));
scene.addEventHandler(MouseEvent.ANY,handler); // hier muss irgendwo der Fehler liegen.
// this.addEventHandler(MouseEvent.ANY, handler); hier zeigt er mir die Position und Aktion der Maus, wenn sie auf einer Ellipse/Rectangle ist[/CODE]