Теоретически эта ссылка на метод должна работать, но это не так. Что я делаю не так?Обработка события обработки JavaFX
Она тем не менее работать, если я заменить ссылки на метод с лямбда-выражения:
btn.setOnAction (e-> btnPush());
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class NewFXMain extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button("Test Button");
btn.setOnAction(this::btnPush());
Pane root = new Pane();
root.getChildren().add(btn);
Scene scn = new Scene(root,300,300);
primaryStage.setTitle("Method Reference Test");
primaryStage.setScene(scn);
primaryStage.show();
}
private void btnPush(){
System.out.println("button pressed");
}
public static void main(String[] args) {
launch(args);
}
}
Спасибо, это очень ясно! The() были в курсе ошибки, забыл удалить их после тестирования Lambda. – WestMD
Я предполагаю, что '()' были опечатками, но хотели быть полными. Не забудьте отметить правильный ответ; это поможет другим найти его в поисках. –