在JavaFX TreeTableColumn

时间:2015-05-26 15:25:09

标签: java checkbox javafx alignment treetableview

感谢您阅读我的问题。

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

This is the TOP_LEFT alignment I'm having

^这是TOP_LEFT对齐我

我进行了搜索,但是将对齐更改为单元格内容的常规解决方案在这里无法正常工作,根本不会产生任何结果。

有没有办法将对齐方式更改为CENTER或TOP_CENTER?我使用的是Java8。

编辑更多信息 GUI由FXML制作,TreeTableView位于TitledPane中。使用this solution居中文本单元格(相同的表格,其他列)可以正常工作。从其他列中删除它不会影响Checkbox列

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

colUsable.setCellFactory(CheckBoxTreeTableCell.forTreeTableColumn(colUsable));

另一次尝试:

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

非常感谢你。

1 个答案:

答案 0 :(得分: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;
    }
});