javajavafxtabshboxvbox

How to access my HBox inside a tab in JavaFX?


I have a tabPane with many tabs and each of those tabs has a HBox with many VBox in the HBox.

The tabs and their HBox load at the start by looping through a database and creating them for each row and once done I want to add more VBoxs into the HBox, via a button in the menu at the top of the program. The program prompts the user for a tab and then I set the selectedTab (this.selTab) I'm adding VBox's to via this code, so I can access it as I insert them:

tabPane.getSelectionModel().select(defaultNum);                         
selTab = tabPane.getSelectionModel().getSelectedItem();

I also have a HBox I keep in context. When I tell the system I want to add a VBox to a HBox, the in context HBox is still set to the final HBox made for the final line of the database back when the program started. For example, if I try and put a VBox into tab 3 of 5, it will do everything fine, except it puts the VBox into tab 5 of 5 (the final tab/HBox it made on bootup). I want to change the in context HBox to the one found inside the selectedTab, so that I can direct the system to put the VBox in the correct HBox but I don't know how to access it. I thought it might have been

curHbox = selTab.getContext().getChildren();

or

curHbox = selTab.getContext().getValue();

But I got this error for either: "The method getChildren() is undefined for the type Node"

See below screenshot of the in context selectedTab, how do I access the HBox which you can see in value?

tab


Solution

  • It looks like you are setting the HBox as the content to your tab. So to access that you can directly get the content and cast it to HBox.

    Something like:

    selTab = tabPane.getSelectionModel().getSelectedItem();
    HBox hbox = (HBox)selTab.getContent();
    hbox.getChildren().add(...);