2016-03-24 16 views
1

Ich refactoring eine JavaFX-Klassendatei zu einer Controller-Klasse und einer FXML-Datei. In der alten JavaFX-Klasse musste ich ein Sicherheitsnetz für alle Mausereignisse erstellen, indem ich ein Rechteck auf die untere z-Ebene legte, damit Mausereignisse, die während der Maus nicht auf einem Knoten in der Szene stattfanden, immer noch alle Mausereignisse erhalten würden . Gibt es einen besseren Weg in FXML?Erfassen aller Mausereignisse in einem Container

+2

Es gibt im Grunde keinen Unterschied überhaupt in der Funktionalität, die Sie erhalten: FXML nur eine andere ist (vielleicht bequemer), um die Objekte zu spezifizieren, dass sollte erstellt werden und die Eigenschaften, die für sie festgelegt werden sollten. Es ist überhaupt nicht klar, warum Sie ein Rechteck auf der unteren Ebene platzieren sollten, um Mausereignisse trotzdem zu behandeln: warum registrieren Sie nicht einfach den gleichen Maus-Listener mit dem Container selbst? –

+0

Ereignisse bewegen sich abwärts und aufwärts in den Szenengraphbaum ([siehe * 1 Verarbeitungsereignisse *] (http://docs.oracle.com/javase/8/javafx/events-tutorial/processing.htm#CEGJAAFD)). Manuelles Hinzufügen eines "Sicherheitsnetzes" sollte nicht notwendig sein (siehe James_Ds Kommentar) ... – fabian

Antwort

1

Sie haben soeben einen Event-Handler selbst in die Szene könnte hinzufügen:

scene.addEventHandler(MouseEvent.ANY, event -> { 
    System.out.println(event); 
}); 
Verwandte Themen