Java, события в javaFX
В документации Java и в книгах написано, что для наблюдения за событиями надо создать соответствующий класс и зарегистрировать его. Как то так:
btn.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World");
}
});
Но до того как я все это прочитал я создал и зарегистрировал метод и все было хорошо:
btn.setOnMouseClicked(this::clicked);
// и где то в классе
private void clicked(MouseEvent e) {
System.out.println("Hello World");
}
И еще в методе Node#setOnMouseClicked:
public final void setOnMouseClicked(EventHandler<? super MouseEvent> value)
По моему это означает передать в параметр объект типа EventHandler<MouseEvent>.
1) Если это так, почему передача метода в параметр не вызвало ошибку?
2) Какой вариант использовать и зачем создавать отдельный класс, если можно и методом обойтись?
Спасибо