У меня есть узел с несколькими дочерними элементами и хочу, чтобы стрелка свернуть/разворачивать была значком по умолчанию для узла, но у меня есть еще один рисунок, который я бы как поставить рядом со стрелкой. Предоставляет ли дерево JavaFX способ сделать это?JavaFX Treeview - как создать родительский узел с «двумя» графическими объектами
0
A
ответ
0
Либо просто передать графику в TreeItem
:
TreeItem<String> root = new TreeItem<>("Root", new Rectangle(16, 16, Color.CORAL));
и т.д.,
или использовать мобильный завод:
TreeView<String> tree = new TreeView<>();
tree.setCellFactory(tv -> new TreeCell<String>() {
private final Node graphic = new Rectangle(16, 16, Color.CORAL);
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setGraphic(empty ? null : graphic);
setText(empty ? null : item);
}
});
Обратите внимание, что для больших деревьев, второй метод имеет потенциал будет намного более эффективным, поскольку он создает только графику (в этом случае два узла) для каждой ячейки , тогда как первый метод создает графики для каждого item в дереве (отображается ли оно или нет). Возможно (я бы решительно возражал), вторая техника имеет лучшее разделение проблем (в первом решении графический элемент является частью данных, что просто неверно).
SSCCE для первой методики:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class TreeGraphicTest extends Application {
@Override
public void start(Stage primaryStage) {
TreeItem<String> root = new TreeItem<>("Root", new Rectangle(16, 16, Color.CORAL));
for (int i = 1 ; i <= 3 ; i++) {
root.getChildren().add(new TreeItem<>("Child "+i, new Rectangle(16, 16, Color.CORNFLOWERBLUE)));
}
TreeView<String> tree = new TreeView<>(root);
primaryStage.setScene(new Scene(tree));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
SSCCE для второго метода:
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.TreeCell;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class TreeGraphicTest extends Application {
@Override
public void start(Stage primaryStage) {
TreeItem<String> root = new TreeItem<>("Root");
for (int i = 1 ; i <= 3 ; i++) {
root.getChildren().add(new TreeItem<>("Child "+i));
}
TreeView<String> tree = new TreeView<>(root);
tree.setCellFactory(tv -> new TreeCell<String>() {
private final Node rootGraphic = new Rectangle(16, 16, Color.CORAL) ;
private final Node childGraphic = new Rectangle(16, 16, Color.CORNFLOWERBLUE) ;
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setGraphic(empty ? null : getTreeItem() == root ? rootGraphic : childGraphic);
setText(empty ? null : item);
}
});
primaryStage.setScene(new Scene(tree));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Скриншот (для любой):
Смежные вопросы
- 1. Как создать дерево JavaFX с объектами
- 2. угловой treeview- получить родительский узел
- 3. найти родительский узел в treeview
- 4. Удалить родительский узел из TreeView
- 5. Как создать непосещаемый узел TreeView?
- 6. TreeView Как создать узел программно
- 7. C# TreeView get Родительский узел Индекс
- 8. Кнопка «Move Up Treeview» выбирает родительский узел
- 9. Android OPENGL 2d Пересечения между двумя графическими объектами
- 10. neo4j создать узел с несколькими объектами
- 11. TreeView - Как установить родительский узел из привязки данных
- 12. Как остановить JavaFX Родительский узел получить щелчок после перетаскивания между дочерними объектами
- 13. отключить узел treeview
- 14. .NET TreeView заставляет приложение сбой при попытке проверить родительский узел
- 15. Как создать прямой вызов между двумя объектами
- 16. Как создать общую часть между двумя объектами
- 17. Загрузить фоновое изображение перед другими графическими объектами
- 18. Редактируемый JavaFX TableView с объектами
- 19. Treeview с глубоко вложенными объектами?
- 20. Kendo Treeview checked Получить родительский узел при проверке дочерних узлов
- 21. Различать между двумя объектами GtkTreeView
- 22. Как переименовать родительский узел?
- 23. Получите родительский узел дочернего элемента в WPF C# TreeView
- 24. XSL Дублировать родительский узел как собственный родительский узел
- 25. Treeview Добавить ребенок в родительский узел без создания нового родителя
- 26. TreeView Обнаруживать, если пользователь нажимает на родительский или дочерний узел
- 27. Чтобы получить родительский узел в TreeView в TreeViewDragDropTarget в Silverlight
- 28. Перетаскивание JavaFX с взаимодействующими объектами
- 29. создать узел с двумя атрибутами в XQUERY
- 30. Родительский узел Treeview должен выбирать с дочерним узлом по умолчанию в Treeview