Ich versuche ein Fenster in meinem Programm zum Zeichnen von Linien mit einer Maus zu schreiben. Ich habe bisher mit dieser Lösung kommen:javaFX, zwei MausEreignisse gleichzeitig
public class TrackEditor extends Stage
{
TrackDescription editedTrackDescription;
double startX, startY;
LineTo line;
MoveTo move;
boolean pressed;
public TrackEditor()
{
Path path = new Path();
this.setTitle("New Game");
this.setResizable(false);
StackPane stackPane = new StackPane();
SquareGrid squareGrid = new SquareGrid();
Pane drawingPane = new Pane();
Pane activePane = new Pane();
stackPane.getChildren().addAll(squareGrid,drawingPane, activePane);
drawingPane.getChildren().add(path);
activePane.setOnMousePressed((MouseEvent me) -> {
pressed = true;
startX = me.getX();
startY = me.getY();
move = new MoveTo(me.getX(), me.getY());
path.getElements().add(move);
});
activePane.setOnMouseReleased((MouseEvent me) -> {
pressed = false;
line = new LineTo(me.getX(), me.getY());
path.getElements().add(line);
});
activePane.setOnMouseMoved((MouseEvent me) -> {
if(pressed)
{
activePane.getChildren().clear();
Line temporaryLine = new Line(startX, startY, me.getX(), me.getY());
activePane.getChildren().add(temporaryLine);
}
});
Scene scene = new Scene(stackPane);
this.setScene(scene);
this.initModality(Modality.APPLICATION_MODAL);
this.sizeToScene();
this.show();
}
}
Aber, wie ich beobachtet habe, die temporäre Linie nicht gezogen wird, wenn Maustaste gedrückt wird. Gibt es eine Art Konflikt zwischen den Ereignissen MousePressed
und Mouse Released
oder ist das Problem woanders?
Vielen Dank, ich wusste überhaupt nichts über diese Veranstaltung –