实现路径导航栏(面包屑导航栏)控件

7
我希望生成一个UI,使用户可以浏览树形结构的路径。这是我想要的一个示例,来自JavaFX Scene Builder。
根据TreeView中的实际位置,更新此UI。通过单击各个项,更新树。

enter image description here

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

我的第一个想法是生成一排紧密相连的按钮,但也许还有更好的想法。

谢谢。


1
这个问题可能太宽泛了,因为有很多不同的方法可以做到这一点。我猜你指的是 TreeView,而不是 TableView?我可能会尝试在单个 ToggleGroup 中使用 ToggleButton。您可以使用 ToggleGroupselectedToggleProperty 注册监听器以更新树中的选择,并使用树的选择模型注册监听器以选择特定的 ToggleButton - James_D
谢谢。你是对的,我是指“TreeView”。我会看一下“ToggleButton”。 - BerndGit
1
请查看JavaFX ESSEMBLES在线。 - GOXR3PLUS
2个回答

5

您可以使用ControlsFxBreadCrumbBar

enter image description here

Pane root = ...
Label selectedCrumbLbl = new Label();

BreadCrumbBar<String> sampleBreadCrumbBar = new BreadCrumbBar<>();
root.getChildren().addAll(sampleBreadCrumbBar, selectedCrumbLbl);

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


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

我直接在答案中输入了这个。可能会有错误,请留言。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接