在两个不同的选项卡中添加相同内容

Vip*_*hah 1 tabs javafx-2

我在申请中面临一个奇怪的问题.

我想在两个不同的选项卡上复制UI(即两个不同的选项卡将在其容器中保存相同的VBox对象).

我期待的是,而不是创建两个不同的VBox对象添加到Tab1和Tab2我将创建一个单独的VBox对象,填充所需的内容,然后将相同的对象添加到Tab1和Tab2.

目前正在发生的事情是如果我将该UI添加到Tab1然后它才能正确显示.但是如果我向Tab2添加相同的对象,那么它将从Tab1中消失.

下面是我正在使用的示例代码.

@FXML
private Tab tab1, tab2;

Label label=new Label("Sample");

tab1.setContent(label);
tab2.setContent(label);
Run Code Online (Sandbox Code Playgroud)

我在这两个标签内容中的假设是什么,我将看到示例文本.

但是示例文本仅显示在Tab2而不是Tab1中.(Tab1显示为空.)

我是Javafx的新手,所以如果我问一个愚蠢的问题,请耐心等待:)

Nik*_*los 5

Node是所有的JavaFX的图形元素的基类,是树结构中的一员.因此,每个节点最多可以有一个父节点.很明显,在幕后,当您将自己VBox放到另一个选项卡时,JavaFX会将其分配给另一个父级.同时将其从旧父节点中删除,以保持节点树的一致性.

我想你会有更好的机会:

  1. VBox如果您只想重用代码,请实现封装其子项及其子项的创建的组件.
  2. 事实上,VBox一次只能在一个标签上.您必须VBox每次都听一些标签激活事件并将其分配给激活的标签.