为锚窗格设置类控制器

Posted

技术标签:

【中文标题】为锚窗格设置类控制器【英文标题】:Setting a class Controller for Anchor Pane 【发布时间】:2012-12-30 20:26:39 【问题描述】:

在使用 JavaFX Scene Builder 时遇到以下问题...

鉴于:

一个 fxml 文件,包含描述 Anchor Pane(由 Scene Builder 形成的 fxml); 对于 Anchor Pane,未指定 Controller 类。 使用 FXMLLoader 将此 fxml 加载到 Java 应用程序中。

需要:

下载锚窗格后,将值设置为控制器类。 需要使用不同的处理程序加载相同的 fxml。

问题:是否有可能,如果有 - 如何实施?

【问题讨论】:

【参考方案1】:

加载FXML文件的控制器类也可以通过Scene Builder来设置。但是您想在应用程序的加载时设置它。为此,您应该在调用 load() 方法之前设置 FXMLLoader 的控制器:

AnchorPane rootPane;
MyController controller = new MyController();
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("my.fxml"));
fxmlLoader.setRoot(rootPane);
fxmlLoader.setController(controller);
fxmlLoader.load();

【讨论】:

Uluk Biy,嗨,我尝试了你的答案并为我工作。我有一个问题,如何使用设计器设置控制器类?我不知道在“控制器类”字段中放什么,我只尝试了控制器类的名称、包/名称、应用程序名称/包/名称......如果你知道或能给我一个例子.. . 谢谢你 @HoNgOuRu 很遗憾我没有使用场景构建器。 嗨,感谢您的回答。问题是场景构建器在保存之前从 fxml 中删除了包的导入语句。

以上是关于为锚窗格设置类控制器的主要内容,如果未能解决你的问题,请参考以下文章

将屏幕一分为二的键盘快捷键,左侧的源窗格和控制台窗格

将控制栏/窗格停靠到 CMDIFrameWndEx?

哪些命令在 Mac 的“仪器”应用程序的“控制台窗格”中有效? (例如,在仪器中)

通过 AppleScript 设置屏幕共享密码

从Visual Studio代码源代码控制窗格上下文菜单中提供“打开文件”命令

JavaFX 8 - 每个选项卡带有单独的 FXML 和控制器的选项卡和选项卡