获取Controller类的HBox元素的Indexnumber

时间:2014-05-14 15:26:15

标签: javafx javafx-8

我有一个包含Vbox的Hbox,每个Vbox本身包含可以添加或删除的其他元素以及一些控制按钮。现在我想在我的模型中添加或删除那些灵活的元素,我需要知道发生了哪些Vbox。

我的尝试是获取Hbox的子项并检查Vbox(发生/更改的位置)在此列表中的位置。然后使用此索引。

public int getId (Action event){  
  Button button= event.getSource();  
  Vbox vbox= button.getParent();  
  Hbox hbox= vbox.getParent(); 
  hbox.getChildrenUnmodifiable();
  ....//TODO
}

问题是如果我打印hbox.getChildrenUnmodifiable();它会告诉我:

  

[VBox @ 1402dd44,Separator @ 4eaff333 [styleClass = separator],Grid hgap = 0.0,vgap = 0.0,alignment = TOP_LEFT]

在我添加其他Vbox之后,只需添加

  

网格hgap = 0.0,vgap = 0.0,alignment = TOP_LEFT]

一次又一次,并且不再向我显示已添加的Vbox的更多信息。

我使用hbox.getChildren().add(FXMLLoader.load(getClass().getResource("/VBoxElement.fxml")));

从其他.fxml文件加载Vbox

现在我想知道这是否是一个正确的方法来获取我正在工作的Vbox的Indexnumber?如果有人有任何建议如何获得我的Hbox的工作索引? 这是我的第一个JavaFX项目,如果我错过了解,可以随意纠正我。

1 个答案:

答案 0 :(得分:0)

正如James_D所说:

  

ObservableList只是java.util.List的子接口,所以你可以   只需调用所有常用方法:indexOf(...),add(..),remove(...),   等 - James_D 5月14日15:41

谢谢,工作得很好。正如我预期的那样,但我搞砸了我的fxml结构,而我添加的fxml不包含VBox作为根元素,它包含一个Grid。网格中的toString()在输出

中生成网格hgap=0.0, vgap=0.0, alignment=TOP_LEFT