如何在ControlsFX中使用BreadCrumbBar(JavaFX 8)

Jay*_*dya 5 java javafx breadcrumbs javafx-8 controlsfx

我是一个Java初学者,试图使用来自ControlsFX的BreadCrumbBar在我正在使用JavaFX 8制作的桌面应用程序中创建一个导航栏.我似乎无法按照我想要的方式工作,并且在线搜索教程没有结果.我找到了API,但它没有多大帮助.

我的代码附在下面:

@FXML
private BreadCrumbBar bread;

private TreeItem<String> tree, tree1, tree2;

@FXML
private void initialize(){
    tree = new TreeItem<String>("Log In");
    tree1 = new TreeItem<String>("Language Selection");
    tree2 = new TreeItem<String>("Patient List");
    tree.getChildren().addAll(tree1, tree2);
    bread.setSelectedCrumb(tree);
}

public void refresh(){
    bread.setSelectedCrumb(tree.nextSibling(bread.getSelectedCrumb()));
}
Run Code Online (Sandbox Code Playgroud)

条形图显示为登录屏幕应该只显示"登录"作为选定的crumb.我每次想要切换到下一个痕迹按钮时都会从主类调用刷新但是当我移动时条形图就会消失从第一个屏幕开始.它不应该将选定的面包屑设置为树的下一个兄弟,即tree1吗?

如果有人知道如何配置自动导航功能,那将是非常有用的.(如果它易于实现,可能比排序我自己的代码更有帮助)

谢谢!

Tor*_*arn 9

BreadCrumbBar使用树来显示导航,因此您应该创建TreeItem.

以下是具有3个级别的树的示例:

    TreeItem<String> root = new TreeItem<String>("Root");

    TreeItem<String> item1 = new TreeItem<String>("Item 1");
    TreeItem<String> item11 = new TreeItem<String>("Item 1.1");
    TreeItem<String> item12 = new TreeItem<String>("Item 1.2");

    item1.getChildren().addAll(item11, item12);

    TreeItem<String> item2 = new TreeItem<String>("Item 2");

    root.getChildren().addAll(item1, item2);
Run Code Online (Sandbox Code Playgroud)

然后你有一个像这样表示的树图形:

                   <item11>
                 /
         <item1>
       /         \
<root>             <item12>
       \
         <item2>
Run Code Online (Sandbox Code Playgroud)

当你使用BreadCrumbBar.setSelectedCrumb(TreeItem<?>)你选择

最底部的路径节点(就面包屑条而言最右侧的节点)

所以如果你使用breadcrumb.selectedCrumbProperty().set(root);你会得到:

在此输入图像描述

如果你使用breadcrumb.selectedCrumbProperty().set(item11);你会得到:

在此输入图像描述

希望它有所帮助,我实际上是想弄清楚它是如何工作的^^