treeview - JDK 8 TreeView 披露三角形垂直对齐不正确

标签 treeview javafx-2 javafx java-8

我制作了一个高度为 40 px 的自定义树单元。

这里的问题披露三角形没有垂直居中对齐。

enter image description here

这里是树单元的代码:

public static class TestObjectCell extends AnchorPane implements ISMPBVisualComponentWithData<TestObject>{

        public Label label;

        public TestObjectCell(){
            label=new Label("label");
            AnchorPane.setTopAnchor(label, 10.0);
            this.getChildren().setAll(label);
            this.setMinHeight(40);
            this.setPrefHeight(40);
            this.setMaxHeight(40);
        }


        @Override
        public void setComponentData(TestObject object) {
            //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }



    }

正如您在顶部对齐的图片显示三角形中看到的那样,如何对齐单元格的垂直中心?

最佳答案

我也遇到了同样的问题。我使用单元工厂来翻译 TreeCell 的公开节点:

myTree.setCellFactory(treeView -> {

        final TreeCell<Label> cell = new TreeCell<Label>() {
            @Override public void updateItem(Label item, boolean empty) {
                super.updateItem(item, empty);

                if (empty) {
                    setGraphic(null);
                } else {
                    final Node graphic = (getTreeItem() == null) ? null : getTreeItem().getGraphic();
                    setGraphic((graphic != null) ? graphic : (item != null) ? item.getGraphic() : null);  
                }
                setText((empty || item == null) ? null : item.getText()); 
            }
        };          

        cell.disclosureNodeProperty().addListener((obs, oldNode, newNode) -> {
            final StackPane pane = (StackPane) newNode;
            newNode.translateYProperty().bind(cell.heightProperty().multiply(0.5).subtract(pane.heightProperty()));
        }); 
        return cell;
});

当然必须有更好的方法来做到这一点,但至少这对我有用。

关于treeview - JDK 8 TreeView 披露三角形垂直对齐不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20369438/

相关文章:

c - 可编辑 GtkTreeView 的困难

java - 从 TextField 编辑 TableView 的值

templates - JavaFX 2.0-样式/模板现有控件

java - 如何从 javaFx 中同一数据库中的两个 mysql 表填充 TableView ?

尝试删除形状时出现 JavaFX 错误

wpf - 使用 Treeview HierarchicalDataTemplate.Triggers 更改文件夹图标

javascript - Bootstrap Treeview 中不同背景颜色的节点

wpf - 为什么在定义TreeView.ItemTemplate后TreeView不会自动为子节点选择DataTemplates?

JavaFX 简单更新标签(线程)

java - 单击按钮时调整文本字段的大小