控制器类中的文件选择器-SceneBuilder JavaFX

控制器类中的文件选择器-SceneBuilder JavaFX,java,javafx,scenebuilder,filechooser,Java,Javafx,Scenebuilder,Filechooser,我正在尝试对使用SceneBuilder创建的按钮的功能进行编码。 我在Scene builder中找到了“Code”部分,并设置了单击按钮时将启动的方法的名称(例如fileSelector)。在这个方法中,我应该使用FileChooser变量(我需要从PC上获取一个图像并将其保存到一个“File”变量) 我复制了示例控制器骨架并将其粘贴到我的控制器类。现在我不知道如何实现该方法,因为我需要一个Stage变量来与FileChooser变量一起使用,但是Stage变量是为public void s

我正在尝试对使用SceneBuilder创建的按钮的功能进行编码。 我在Scene builder中找到了“Code”部分,并设置了单击按钮时将启动的方法的名称(例如fileSelector)。在这个方法中,我应该使用FileChooser变量(我需要从PC上获取一个图像并将其保存到一个“File”变量)

我复制了示例控制器骨架并将其粘贴到我的控制器类。现在我不知道如何实现该方法,因为我需要一个Stage变量来与FileChooser变量一起使用,但是Stage变量是为
public void start(Stage primaryStage)
方法提供的

我的主课

包应用;
导入java.io.IOException;
导入javafx.application.application;
导入javafx.fxml.fxmloader;
导入javafx.stage.stage;
导入javafx.scene.scene;
导入javafx.scene.layout.Pane;
公共类MainExample扩展了应用程序{
@凌驾
公共无效开始(阶段primaryStage)引发IOException{
Pane firstPane=FXMLLoader.load(MainExample.class.getClassLoader().getResource(“buttonExample.fxml”);
场景firstScene=新场景(第一窗格);
初级阶段。设置场景(第一场景);
primaryStage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}
我的控制器类

包应用;
导入javafx.event.ActionEvent;
导入javafx.fxml.fxml;
导入javafx.scene.control.Button;
公共类MyController{
@FXML
私有按钮选择文件;
@FXML
作废文件选择器(ActionEvent事件){
FileChooser FileChooser=newfilechooser();
File File=fileChooser.showOpenDialog(阶段);
}
}
从按钮中选择FXML


您需要一个
窗口
实例来显示
文件选择器
对话框,您可以从如下事件中获得它:

@FXML
作废文件选择器(ActionEvent事件){
windowwindow=((节点)(event.getSource()).getScene().getWindow();
FileChooser FileChooser=newfilechooser();
File File=fileChooser.showOpenDialog(窗口);
event.consume();
}

您需要一个
窗口
实例来显示
文件选择器
对话框,您可以从如下事件中获得它:

@FXML
作废文件选择器(ActionEvent事件){
windowwindow=((节点)(event.getSource()).getScene().getWindow();
FileChooser FileChooser=newfilechooser();
File File=fileChooser.showOpenDialog(窗口);
event.consume();
}

请注意,由于您已经有了对事件源的引用,因此可以简化为
selectFile.getScene().getWindow()注意事项:如果事件源是
MenuItem
这将抛出
ClassCastException
。请注意,由于您已经有了对事件源的引用,因此可以简化为
selectFile.getScene().getWindow()注意事项:如果事件源是
MenuItem
这将抛出
ClassCastException