我想生成一个用户可以浏览树结构路径的UI。这是我想要的一个例子,取自JavaFX Scene Builder。
根据TreeView中的实际位置,此UI将更新。通过单击单个项目,树将更新。
我的问题: 哪种节点/控件最适合这种方法? (不需要完整的代码。只需提及控件的名称)。
我的第一个想法是彼此紧密地生成一排按钮,但也许有更好的想法。
感谢。
答案 0 :(得分:4)
您可以使用ControlsFx的BreadCrumbBar
BreadCrumbBar<String> sampleBreadCrumbBar = new BreadCrumbBar<>();
TreeItem<String> model = BreadCrumbBar.buildTreeModel("Hello", "World", "This", "is", "cool");
sampleBreadCrumbBar.setSelectedCrumb(model);
sampleBreadCrumbBar.setOnCrumbAction(new EventHandler<BreadCrumbBar.BreadCrumbActionEvent<String>>() {
@Override public void handle(BreadCrumbActionEvent<String> bae) {
selectedCrumbLbl.setText("You just clicked on '" + bae.getSelectedCrumb() + "'!");
}
});
答案 1 :(得分:0)
选择的解决方案对我不起作用。我不得不听selectedCrumbProperty
。
TreeItem<String> helloView = new TreeItem("Hello");
TreeItem<String> worldView = new TreeItem("World");
hellowView.getChildren().add(worldView);
TreeItem<String> thisView = new TreeItem("This");
worldView.getChildren().add(thisView);
TreeItem<String> isView = new TreeItem("is");
thisView.getChildren().add(isView);
BreadCrumbBar<String> sampleBreadCrumbBar = new BreadCrumbBar<>(helloView);
sampleBreadCrumbBar.setSelectedCrumb(helloView);
sampleBreadCrumbBar.selectedCrumbProperty().addListener((observable, oldValue, newValue) -> {
System.out.println(newValue);
if (newValue == worldView) {
//load this view
}
});
我直接在答案中输入了此内容。可能有错误。留下笔记。