在JavaFX TreeTableColumn上居中CheckBox

4 java checkbox javafx alignment treetableview

谢谢你阅读我的问题.

我正在使用TreeTableView,并设法通过遵循此答案中提出的结果将布尔值显示在其中一列中.它工作正常,但是应用时,复选框有一个TOP_LEFT对齐,而不是CENTER对齐(CENTER对齐是使用常规TableView上的复选框的默认值):

这是我正在进行的TOP_LEFT对齐

这是我正在进行的TOP_LEFT对齐

我搜索过,但是将对齐更改为单元格内容的常规解决方案在此处不起作用,根本不会产生任何结果.

有没有办法将对齐方式更改为CENTER或TOP_CENTER?我正在使用Java8.

编辑更多信息 GUI是用FXML制作的,TreeTableView在TitledPane中.使用此解决方案居中文本单元格(相同的表,其他列)工作正常.从其他列中删除它不会影响Checkbox列

我尝试以两种不同的方式添加Checkbox,但它们都具有TOP_LEFT对齐方式:

colUsable.setCellFactory(CheckBoxTreeTableCell.forTreeTableColumn(colUsable));
Run Code Online (Sandbox Code Playgroud)

而另一个尝试:

colUsable.setCellFactory(new Callback<TreeTableColumn<MyType,Boolean>,TreeTableCell<MyType,Boolean>>() {
    @Override 
    public TreeTableCell<MyType,Boolean> call( TreeTableColumn<MyType,Boolean> p ) {
        return new CheckBoxTreeTableCell<>(); 
    }
});
Run Code Online (Sandbox Code Playgroud)

非常感谢.

小智 5

我找到了中心的方法.CheckBoxTreeTableCell类来自Java8实现.检查链接以查看文档.我发现改变对齐的方式是这样的:

colUsable.setCellFactory(new Callback<TreeTableColumn<MyType,Boolean>,TreeTableCell<MyType,Boolean>>() {
    @Override 
    public TreeTableCell<MyType,Boolean> call( TreeTableColumn<MyType,Boolean> p ) {
        CheckBoxTreeTableCell<MyType,Boolean> cell = new CheckBoxTreeTableCell<MyType,Boolean>();
        cell.setAlignment(Pos.CENTER);
        return cell;
    }
});
Run Code Online (Sandbox Code Playgroud)