理論上這種方法引用應該可以工作,但它不會。我究竟做錯了什麼?JavaFX方法參考事件處理
如果我替換lambda表達式的方法參考但它確實工作:
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
我假設'()'是一個錯字,但想要完成。請不要忘記標記答案是正確的;它會幫助其他人在搜索中找到它。 –