Javafx Lambda expression button.setOnAction在主类之外不起作用

Javafx Lambda expression button.setOnAction在主类之外不起作用,javafx,Javafx,我正在尝试将lambda表达式附加到按钮以触发方法。我希望lambda位于类的主方法和方法之外。我已经导入了javafx.event.ActionEvent,以避免与java.awt.event.ActionEvent混淆。我可能没有以一种可以理解的方式解释这个问题,但希望代码能有所帮助。 注意:我曾尝试在方法内、方法外使用lambda表达式,只是想看看它是否工作,但在方法外不工作 错误消息为“无法解析符号'setOnAction'” 这不会导致编译错误吗?最后一个btnReveal.setOn

我正在尝试将lambda表达式附加到按钮以触发方法。我希望lambda位于类的主方法和方法之外。我已经导入了javafx.event.ActionEvent,以避免与java.awt.event.ActionEvent混淆。我可能没有以一种可以理解的方式解释这个问题,但希望代码能有所帮助。 注意:我曾尝试在方法内、方法外使用lambda表达式,只是想看看它是否工作,但在方法外不工作

错误消息为“无法解析符号'setOnAction'”


这不会导致编译错误吗?最后一个btnReveal.setOnAction()将不起作用,因为它不在Java中的方法中,类似的代码必须在初始值设定项块、构造函数或方法中。通过将代码置于方法之外,您试图实现什么?@Slaw,谢谢您我应该实现可初始化的,并将代码包含在初始化方法内。在initialize方法之外尝试它真是愚蠢。这不会导致编译错误吗?最后一个btnReveal.setOnAction()将不起作用,因为它不在Java中的方法中,类似的代码必须在初始值设定项块、构造函数或方法中。通过将代码置于方法之外,您试图实现什么?@Slaw,谢谢您我应该实现可初始化的,并将代码包含在初始化方法内。我真傻,竟然在初始化方法之外尝试。
package sample;

import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.stage.Stage;

import javafx.event.ActionEvent;

public class DashboardController {

    @FXML
    private Label lblHidden;
    @FXML
    private Button btnReveal;

    @FXML
    void backToLogin(ActionEvent event) throws Exception{
        Parent myRoot = FXMLLoader.load(getClass().getResource("login.fxml"));
        Scene loginScence = new Scene(myRoot);
        Stage myStage = (Stage)((Node)event.getSource()).getScene().getWindow();
        myStage.setScene(loginScence);
        myStage.setTitle("Login");
        myStage.show();

        //Lambda works though not need here - inside a method
        btnReveal.setOnAction(e->{
            lblHidden.setText("Lambda inside a method - works");
        });

    }
      //Lambda doesn't work here - -- I want it to work here
      btnReveal.setOnAction(e->{`enter code here`
        lblHidden.setText("Lambda doesn't work here");
    });

}