gpt4 book ai didi

JavaFX TabPane - 多个 Controller 和多个 FXML 文件

转载 作者:行者123 更新时间:2023-11-30 06:20:48 28 4
gpt4 key购买 nike

我目前正在使用 JavaFXML 和场景生成器编写系统。我创建了一个登录页面,您可以在其中以管理员或员工身份登录。在管理包中,我有 Admin.FXML 和 AdminController。

无论如何,我使用了 TabPane,并且有五个选项卡,第一个名为“客户”,所有实现(代码)都在 AdminController 中,因为这是 AnchorPane 的设置根 Controller 。

正如您可以想象的那样,在一个 Controller 类中编写这五个选项卡的所有代码将非常冗长。有没有一种方法可以为各个选项卡提供多个 Controller 类(每个选项卡一个)和一个 FXML 文件或多个 FXML 文件和 Controller 类?

最佳答案

是的,这是可能的。你要找的是神奇的<fx:include>标签。我有一个类似的选项卡式应用程序,我为每个选项卡编写了一个 FXML 和一个 Controller ,并将它们包含在两个位置,一次在 FXML 中,一次在主 Controller 代码中。我将在此处复制并粘贴我的示例。

主要 FXML:

<TabPane xmlns:fx="http://javafx.com/fxml"
fx:controller="my.package.MainController" fx:id="root">
<tabs>
<Tab text="First Tab">
<fx:include fx:id="firstTab" source="FirstModule.fxml"/>
</Tab>
<Tab text="Second Tab">
<fx:include fx:id="secondTab" source="SecondModule.fxml"/>
</Tab>
</tabs>
</TabPane>

主 Controller :

public class MainController {
@FXML
private TabPane root;
@FXML
private FirstModuleController firstTabController;
@FXML
private SecondModuleController secondTabController;

// other code
}

这里需要注意的一件事是,我通过使用给定的 fx:id 来包含 Controller 本身来自 FXML 文件,包含单词 Controller添加到最后。这指定您希望 Controller 与所包含的 fxml 文件的根关联,而不是与根本身关联。例如,如果 FirstModule.fxml 的根目录是 VBox您可以通过输入 @FXML private VBox firstTab 来包含该根目录

关于JavaFX TabPane - 多个 Controller 和多个 FXML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48190678/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com