JavaFX如何访问选中Tab选项卡内部嵌套的HBox容器
问题原因
你调用getContext()方法属于API用错,JavaFX中Tab存储内容布局的属性是content,而非context,且getContent()返回值为Node类型,需要向下转型为你实际的布局类型HBox后,才能操作子节点。
正确实现代码
// 选中目标Tab tabPane.getSelectionModel().select(defaultNum); selTab = tabPane.getSelectionModel().getSelectedItem(); // 校验类型后强转获取HBox if (selTab.getContent() instanceof HBox) { curHbox = (HBox) selTab.getContent(); } // 向HBox中插入VBox curHbox.getChildren().add(yourNewVBox);
优化方案(可选)
初始化Tab时可以把HBox存入Tab的userData属性,避免后续强转的校验成本:
初始化阶段代码:
// 生成Tab时提前存储HBox引用 HBox tabRootHbox = new HBox(); Tab tab = new Tab("Tab名称", tabRootHbox); tab.setUserData(tabRootHbox); tabPane.getTabs().add(tab);
后续取值代码:
curHbox = (HBox) selTab.getUserData();
内容的提问来源于stack exchange,提问作者Shenavyre
相关产品推荐
相关产品推荐

