如何在 Javafx 中让 Treeview DisclosureNode 正确?

Posted

技术标签:

【中文标题】如何在 Javafx 中让 Treeview DisclosureNode 正确?【英文标题】:How to get Treeview DisclosureNode to right , in Javafx? 【发布时间】:2015-09-22 06:04:11 【问题描述】:

在 Javafx 中,Treeview 的 DisclosureNode 默认位于左侧。我怎样才能将披露节点放置在右侧(向右浮动)..?? 任何帮助将不胜感激。

【问题讨论】:

什么是 DisclosureNode?​​span> @UlukBiy 这是“展开/折叠”图标:docs.oracle.com/javase/8/javafx/api/javafx/scene/control/… 【参考方案1】:

您只需要设置节点方向即可获得从右到左的行为。但请注意,此 TreeView 的所有子项都将默认继承方向。

import javafx.application.Application;
import javafx.geometry.NodeOrientation;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class TreeViewRightLeft extends Application 

    @Override
    public void start(Stage primaryStage) 
        TreeItem<String> item = new TreeItem<>("Root Node");
        item.setExpanded(true);
        item.getChildren().addAll(
                new TreeItem<>("Item 1"),
                new TreeItem<>("Item 2"),
                new TreeItem<>("Item 3")
        );
        TreeView<String> treeView = new TreeView<>(item);

        // Here you can select the orientation.
        treeView.setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);

        BorderPane root = new BorderPane(treeView);
        Scene scene = new Scene(root, 300, 250);
        primaryStage.setTitle("TreeView");
        primaryStage.setScene(scene);
        primaryStage.show();
    

    public static void main(String[] args) 
        launch(args);
    

从右到左

从左到右(默认)

【讨论】:

嗨,有没有其他方法不使用NodeOrientation。我们可以用 css.. 做点什么吗? @user2396250 你能解释一下为什么节点方向不适合你吗? @user2396250 没见过这样的 CSS 类。所以可能答案是否定的。

以上是关于如何在 Javafx 中让 Treeview DisclosureNode 正确?的主要内容,如果未能解决你的问题,请参考以下文章

如何在javafx treeview中返回已删除的treeitems?

如何使某些JavaFX TreeView节点不可选择?

Javafx:TreeView 的域对象

javaFX树结构treeview使用

JavaFX仅扩展包含特定Child的TreeView父级

JavaFX TreeView:删除展开/折叠按钮(披露节点)和功能