2

有没有办法让treetableview不可折叠,以便treetable以展开模式setExpanded(true)打开并且不能再次折叠?

4

2 回答 2

0

在树项的扩展属性上添加一个侦听器,如果将其设置为 false,则将其设置回 true - 这样树项将始终显示为展开状态。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import java.util.stream.*;

public class TreeViewSample extends Application {
    @Override public void start(Stage stage) {
        TreeItem<String> rootItem = new TreeItem<>("Inbox");
        rootItem.setExpanded(true);
        IntStream.range(0, 6)
                .mapToObj(i -> new TreeItem<>("Message" + i))
                .collect(Collectors.toCollection(rootItem::getChildren));

        rootItem.expandedProperty().addListener(observable -> {
            if (!rootItem.isExpanded()) {
                rootItem.setExpanded(true);
            }
        });

        TreeView<String> tree = new TreeView<>(rootItem);
        stage.setScene(new Scene(new StackPane(tree), 300, 250));
        stage.show();
    }

    public static void main(String[] args) { launch(args); }
}
于 2015-03-18T17:49:43.163 回答
0

隐藏您的根并将其设置为扩展。它可能会解决您的问题。

treeTable.setShowRoot(false);
root.setExpanded(true);
于 2015-03-19T11:21:52.937 回答