2017-05-18 4 views
0

Ich habe 3 Fragen Ich hoffe, Sie können mir helfen!.setOnMouseMoved() ignoriert, wenn Maus gedrückt und gezogen

1) [GELÖST] ich eine Szene haben, die etwas Image enthält und einen .setOnMouseMoved() an den übergeordneten Knoten binded, die basierend auf der Cursor-Position ihre Abmessungen skaliert;

Das Problem ist, dass, wenn ich die Maustaste drücken und gedrückt halten, und dann ziehe ich die Cursor um die Szene, die .setOnMouseMoved() Ereignisse ignoriert werden und mein Image s nicht bekommen, skaliert:

Gibt es eine Möglichkeit, die .setOnMouseMoved() funktioniert auch in diesem Fall?

2) Meine ImageViews haben auch eine .setOnMouseClicked() Ereignis, aber wenn ich die Maus auf sie drücken und gedrückt halten, um den Cursor bewegen, um die Szene aus, geht wieder auf der Oberseite des Image und release es, das Ereignis wird das selbe ausgeführt;

Ich nicht das Ereignis ausgeführt werden, wenn die Maus die Szene verlässt, was kann ich tun?

3) Wenn ich drücken und halten Sie die Stage Bar (Die Bar mit dem Anwendungsname, auf die Schaltfläche Minimieren und Exit-Taste) ohne Bewegen des Cursors, die alle die Animation in meiner Szene freeze für etwa 1 Sekunde gedrückt Dann wird alles wieder normal: warum?

Danke!

+1

"wenn ich die Maustaste drücke und gedrückt halte, und dann bewege ich den Cursor" Dies ist ein Maus ziehen. Verwende 'setOnMouseDragged'. Es gibt drei verschiedene Modi zum Verarbeiten von Mausereignissen: Lesen Sie das ['MouseEvent'] (http://docs.oracle.com/javase/8/javafx/api/javafx/scene/input/MouseEvent.html), [' MouseDragEvent '] (http://docs.oracle.com/javase/8/javafx/api/javafx/scene/input/MouseDragEvent.html) und [' DragEvent'] (http://docs.oracle.com/javase /8/javafx/api/javafx/scene/input/DragEvent.html) Dokumentation. –

+0

@James_D danke, ich habe gelöst ** 1) **! – Dea5

Antwort

1

1) Versuchen Sie stattdessen, .setOnMouseDragged zu verwenden.

2) .setOnMouseClicked registriert sich, sobald die Maus geklickt wird. Dies bedeutet, dass selbst wenn Sie das Fenster verlassen, es sich trotzdem registrieren wird. Verwenden Sie .setOnMouseReleased, wenn Sie nicht möchten, dass es beim Ziehen außerhalb des Fensters registriert wird.

3) Verwenden Sie java.util.Timer für die Animationen? Wenn ja, überprüfen Sie this.

+0

Nein, ich bin es nicht: übrigens passiert es auch wenn man eine Timeline benutzt ... – Dea5

Verwandte Themen