Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javafx:fxml:显示元素两次_Java_Javafx 2_Fxml_Javafx 8 - Fatal编程技术网

javafx:fxml:显示元素两次

javafx:fxml:显示元素两次,java,javafx-2,fxml,javafx-8,Java,Javafx 2,Fxml,Javafx 8,我想知道是否有一种简单的方法可以克隆FXML中的元素,比如文本框,以便多次显示它们 以下情况: 我有一个选项卡视图,希望在第一个选项卡上显示元素X,在第二个选项卡上显示元素Y,在第三个选项卡上显示X和Y 不允许使用相同的fx:id,也不允许在不同的.fxml文件中导出X和Y,所以我只需要将它们包含两次,这两种方法都不起作用。这是另一个问题 如何解决这个问题?使用自己的FXML创建一个新组件。然后,您可以包含任意数量的内容 实现这一点的一种方法是实现一个自定义java类,例如扩展javafx组件窗

我想知道是否有一种简单的方法可以克隆FXML中的元素,比如文本框,以便多次显示它们

以下情况:

我有一个选项卡视图,希望在第一个选项卡上显示元素X,在第二个选项卡上显示元素Y,在第三个选项卡上显示X和Y

不允许使用相同的fx:id,也不允许在不同的.fxml文件中导出X和Y,所以我只需要将它们包含两次,这两种方法都不起作用。这是另一个问题


如何解决这个问题?

使用自己的FXML创建一个新组件。然后,您可以包含任意数量的内容

实现这一点的一种方法是实现一个自定义java类,例如扩展javafx组件窗格或VBox,然后在该类的构造函数中加载其布局的FXML。使用FXMLLoader,可以将控制器和根设置为当前组件,并在FXML中使用fx:root标记


您将有一个带有java类的组件,它将是自己FXML的根和控制器。

我通常建议将整个.FXML拆分为3个不同的部分,可以分别维护

TabView、SplitPanes和所有类似的容器都应该在一个独立的FXML中,每个新窗格都应该在另一个FXML中。就你而言:

TabView=1 FXML 表1=1 FXML 表2=1 FXML 您可以通过这种方式导出它们,但是元素需要一个容器,比如HBox,或者一些简单的东西,比如启动SceneBuilder或根父级时需要创建的窗格