2015-06-19 5 views
4

Я начинающий Java, пытающийся использовать BreadCrumbBar из ControlsFX, чтобы сделать панель навигации в настольном приложении, которое я использую с помощью JavaFX 8. Я не могу показаться способным чтобы заставить бар работать так, как я хочу, и поиск учебника онлайн не дал никаких результатов. Я нашел API, но это мало помогает.Как использовать BreadCrumbBar в ControlsFX (JavaFX 8)

Мой код прилагается ниже:

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

бар появляется, как это должно быть для журнала в экран, показывающий только «Log In» в качестве выбранного crumb.I'm вызывающего обновления из основного класса каждый раз, Я хочу перейти к следующей кнопке, но панель просто исчезает, когда я перехожу с первого экрана. Должен ли он установить выбранную крошку для следующего брата дерева, то есть дерева1?

Если кто-нибудь знает, как настроить функцию автонавигации, которая также была бы очень полезной. (возможно, более полезно, чем сортировка моего собственного кода, если его легко реализовать)

Спасибо!

+0

Можете ли вы добавить код для MainClass, где вы загружаете FXML и вызываете 'refresh()'? – ItachiUchiha

+0

Я больше не использую эту структуру, поэтому на самом деле это не имеет смысла. Я могу получить панировочные сухари, чтобы не появляться, но щелчок ничего не делает. Работаю над этим! –

ответ

7

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

Тогда вы дерево graphicaly представлены так:

    <item11> 
       /
     <item1> 
    /  \ 
<root>    <item12> 
     \ 
     <item2> 

При использовании BreadCrumbBar.setSelectedCrumb(TreeItem<?>) вы выбираете

самый нижний путь узла (узел на самой правой стороне в терминах br Свинец крошка бар)

Так что, если вы используете breadcrumb.selectedCrumbProperty().set(root); вы получите:

enter image description here

И если вы используете breadcrumb.selectedCrumbProperty().set(item11); вы получите:

enter image description here

Надеются, что это помогает , Я на самом деле пытаюсь выяснить, как это работает тоже ^^

+0

Спасибо, что помогли! Я бы поднял голову, если бы у меня была репутация: D Не могу понять, как работать AutoNavigation. Если вам удастся это узнать, дайте мне знать. –

+0

@JayVaidya: 'autoNavigationEnabled' по умолчанию включен. Вы можете увидеть это, когда вы нажимаете элемент BreadCrumbBar: щелчком элемент станет самым правильным. Но вы все равно должны слушать событие изменения BreadCrumbBar. Чтобы поэкспериментировать самостоятельно, играйте с 'autoNavigationEnabled' с' System.out.println() 'в слушателе' onCrumbAction' – Torarn