我正在使用JavaFX Scene Builder 2.0。版本,我想在TabPane控制器下导入FXML文件。我的想法是,我将有一种带TabPane的容器FXML文件和单独的FXML文件,用于标签内的内容。当我尝试导入FXML文件,我想在一个选项卡下添加的内容时,Scene Builder会显示错误消息"无法在TabPane"下导入TabContents.fxml。为什么不能在TabPane下导入任何东西?如果我直接在根StackPane下导入同一个文件,一切正常。
答案 0 :(得分:1)
编辑:虽然以下情况有效,但最好在AnchorPane
的每个标签中添加某种布局窗格(如TabPane
),然后选择{左侧层次结构视图中的{1}}窗格,然后将其他fxml文档导入到该窗格中,而不是直接导入AnchorPane
(可能是文档的根节点为TabPane
它会工作吗?)。
现在看起来像一个错误:
瞧,按计划工作!
答案 1 :(得分:1)
StackPane
添加到Tab
的内容区域,确保其占据该区域的100%。StackPane
。TabContents.fxml
。它应自动添加到创建的StackPane
中,并应根据需要显示。另外,要回答您的其他问题,将其直接导入TabPane
会将其呈现为Graphic
而不是Node
。
答案 2 :(得分:1)
只需在您想要的位置添加一个新的TabPane,然后编辑您添加的TabPane的FXML代码,如下所示:
<TabPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="5000.0" prefWidth="5000.0" tabClosingPolicy="UNAVAILABLE">
<tabs>
<Tab closable="false" text="MyTab1">
<content>
<fx:include source="MyTab1.fxml" />
</content>
</Tab>
<Tab closable="false" text="MyTab2">
<content>
<fx:include source="MyTab2.fxml" />
</content>
</Tab>
</tabs>
</TabPane>
添加多个标签,您只需添加更多标签&#39;标签&#39;标签。 &#39; MyTab1.fxml&#39;和&#39; MyTab2.fxml&#39;只是包含在TabPane的fxml文件的同一文件夹中的fxml文件。
答案 3 :(得分:0)
它适用于我首先选择场景中的根节点。然后我导入de FXML并从该根节点挂起导入。作为最后一步,我将导入的FXML移动到场景中我想要的位置。
答案 4 :(得分:0)
我意识到当您要导入的另一个FXML模板中包含另一个FXML模板时,FXML导入也会失败。类似的东西:
<fx:include source="top-menu-bar.fxml" />
看起来SceneBuilder不知道top-menu-bar.fxml在哪里。解决方案可以单独处理模板,然后手动添加它们以使其工作。
答案 5 :(得分:0)
它对我有用:
<AnchorPane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER" >
<children>
<fx:include fx:id="includeID" source="includeSource.fxml" />
</children>
</AnchorPane>
包含文件必须包含在窗格的子级中。