2016-03-24 3 views
1

Я перерабатываю файл класса JavaFX в класс контроллера и файл FXML. В старом классе JavaFX мне пришлось создать защитную сетку для всех событий мыши, поместив прямоугольник в нижний слой z, чтобы события мыши, которые произошли, когда мышь не находилась на узле в сцене, код все равно получит все события мыши , Есть ли лучший способ в FXML?Захват всего события мыши в контейнере

+2

Там нет в основном никакой разницы в функциональности вы получаете: FXML это просто другой (возможно, более удобный) способ указать объекты, должен быть создан и свойства, которые должны быть установлены на них. Не совсем понятно, почему вы хотите разместить прямоугольник в нижнем слое для обработки событий мыши в любом случае: почему бы просто не зарегистрировать того же самого прослушивателя мыши с самим контейнером? –

+0

События перемещаются вниз и вверх по дереву графа сцены ([см. * 1 Обработка событий *] (http://docs.oracle.com/javase/8/javafx/events-tutorial/processing.htm#CEGJAAFD)). Вручную добавить «защитную сетку» не нужно, (см. Комментарий James_D) ... – fabian

ответ

1

Вы можете просто добавить обработчик событий к самой сцене:

scene.addEventHandler(MouseEvent.ANY, event -> { 
    System.out.println(event); 
}); 
Смежные вопросы