5

感谢您阅读我的问题。

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

这是我的 TOP_LEFT 对齐

^ 这是我的 TOP_LEFT 对齐方式

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

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

使用更多信息进行编辑 GUI 是用 FXML 制作的,TreeTableView 位于 TitledPane 中。使用此解决方案将文本单元格(同一个表,其他列)居中工作正常。从其他列中删除它不会影响 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<>(); 
    }
});

太感谢了。

4

1 回答 1

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;
    }
});
于 2015-05-26T16:16:09.100 回答