首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JavaFX中将值传递给窗口

如何在JavaFX中将值传递给窗口
EN

Stack Overflow用户
提问于 2015-02-20 09:18:43
回答 2查看 1.4K关注 0票数 0

我试图将存储的首选项值传递给设置窗口中的文本框,该文本框可以从用户登录窗口打开。我计划通过在打开之前设置控制器中的值来做到这一点。如您所见,我还试图使设置窗口成为登录窗口的子窗口。然而,我得到javafx.scene.layout.AnchorPane cannot be cast to javafx.fxml.FXMLLoader的原因是我不明白,并且完全不知道该怎么做。

我按下按钮时打开“设置”窗口的代码如下:

代码语言:javascript
运行
复制
@FXML
void OpenSettingsWindow(ActionEvent event) {

    try {
        FXMLLoader fxmlLoader = new FXMLLoader();
        fxmlLoader = FXMLLoader.load(SettingsWindowController.class
                .getResource("Settings.fxml"));
        AnchorPane page = (AnchorPane) FXMLLoader.load(SettingsWindowController.class
                .getResource("Settings.fxml"));
        Scene scene = new Scene(page);
        root = new Stage();

        root.initModality(Modality.WINDOW_MODAL);
        root.initOwner(Main.primaryStage);
        root.setScene(scene);
        SettingsWindowController controller = fxmlLoader.getController();
        String databaseAddressValue = "databaseAddressValue";
        controller.setDatabaseAddressValue(Preferences
            .systemRoot()
            .node("preferences.SystemPreferences")
            .get(SystemPreferences.databaseAddress, databaseAddressValue));
        root.show();
    } catch (Exception e) {
        e.printStackTrace();
    }

任何关于如何解决这个问题的建议都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-20 09:58:33

您正在将FXMLLoader.load()的返回值分配给FXMLLoader引用。

FXMLLoader.load()返回FXML文件中的最高对象,这肯定不是FXMLLoader对象。

如果您想要使用控制器类进行事件处理和适当的初始化,则必须首先设置它并以另一种方式加载FXML (我假设SettingsWindowController是您的控制器类,并具有默认构造函数):

代码语言:javascript
运行
复制
    SettingsWindowController controller = new SettingsWindowController();
    FXMLLoader loader = new FXMLLoader(SettingsWindowController.class
            .getResource("Settings.fxml"));
    loader.setController(controller);
    AnchorPane page = (AnchorPane)loader.load(); 
票数 1
EN

Stack Overflow用户

发布于 2015-02-20 10:00:01

试试这个:

代码语言:javascript
运行
复制
FXMLLoader fxmlLoader = FXMLLoader(SettingsWindowController.class.getResource("Settings.fxml"));
AnchorPane page = (AnchorPane) fxmlLoader.load();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28625368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档