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