如何在JavaFX TreeCell中右对齐图形

时间:2016-02-16 03:15:04

标签: javafx

我有一个JavaFX TreeView / TreeCell,它有一个按钮作为TreeCell图形的一部分。我想让按钮右对齐,使它们显示为场景右边缘附近的一列,无论树节点或文本宽度的级别如何。我试图在包含按钮的HBox中添加一个spacer,但它似乎不会影响任何东西。有没有一种简单的方法来实现我想要的东西,或者我是否需要求助于计算树形单元的可用空间并在HBox上设置首选大小?这是我的代码的简化版本:

public class TreeCellAlignment extends Application {

    private static class CustomTreeCell extends TreeCell<String> {
        private HBox box = new HBox(4);

        public CustomTreeCell() {
            setContentDisplay(ContentDisplay.RIGHT);
            Region spacer = new Region();
            HBox.setHgrow(spacer, Priority.ALWAYS);
            box.getChildren().addAll(spacer, new Button("X"));
        }

        @Override
        protected void updateItem(String item, boolean empty) {
            super.updateItem(item, empty);
            setText(empty ? null : item);
            setGraphic(empty ? null : box);
        }
    }

    @Override
    public void start(Stage primaryStage) {
        TreeItem<String> root = new TreeItem<>("root");
        root.getChildren().add(new TreeItem<>("child"));
        TreeView<String> tree = new TreeView<>(root);
        tree.setCellFactory(param -> new CustomTreeCell());
        primaryStage.setScene(new Scene(tree, 300, 200));
        primaryStage.show();
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
}

0 个答案:

没有答案