实现路径导航栏(Breadcrumb bar)控件

时间:2016-11-17 15:13:17

标签: javafx navigationbar breadcrumbs

我想生成一个用户可以浏览树结构路径的UI。这是我想要的一个例子,取自JavaFX Scene Builder。

根据TreeView中的实际位置,此UI将更新。通过单击单个项目,树将更新。

enter image description here

我的问题: 哪种节点/控件最适合这种方法? (不需要完整的代码。只需提及控件的名称)。

我的第一个想法是彼此紧密地生成一排按钮,但也许有更好的想法。

感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用ControlsFxBreadCrumbBar

enter image description here

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() + "'!");
        }
});

https://github.com/controlsfx/controlsfx/blob/master/controlsfx-samples/src/main/java/org/controlsfx/samples/button/HelloBreadCrumbBar.java

答案 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
    }
});

我直接在答案中输入了此内容。可能有错误。留下笔记。