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

时间:2013-11-05 10:05:18

标签: 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);

我的假设是什么,在两个标签内容中我都会看到示例文字。

但样本文本仅显示在Tab2而不是Tab1。(Tab1显示为空。)

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

1 个答案:

答案 0 :(得分:5)

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

我认为你会有更好的机会:

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