我有一张漂浮的桌面视图,工作正常。我已经制作了这样的单元格,因为单元格是可编辑的,格式化为货币等。所有单元格都是右对齐的,就像人们期望的那样是数字字段。
其中一列引用了一个字符串(而不是一个浮点数),它也是可编辑的 - 也可以使用TextFieldTableCell.forTableColumn()
方法。
但是,我无法弄清楚如何左对齐字符串 - 它与其他列一样正确。我尝试使用.setAlignment(Pos.CENTER_LEFT)
方法,但 只在编辑单元格时左对齐 。编辑后,它再次右对齐......
以下是该特定专栏的摘录:
cargoTableTypeCol.setCellFactory((TableColumn<CargoItem, String> p) -> {
TableCell<CargoItem, String> cell = new TableCell<>();
cell.setAlignment(Pos.CENTER_LEFT);
return cell;
});
cargoTableTypeCol.setCellFactory(TextFieldTableCell.forTableColumn());
cargoTableTypeCol.setCellValueFactory(cellData -> cellData.getValue().typeProperty());
正如你可以看到煤炭&#34;煤炭&#34;在它没有左对齐。 我知道它是微不足道的,但仍然令人沮丧。
答案 0 :(得分:2)
我建议您尝试以下操作:cargoTableTypeCol.setStyle("-fx-alignment: CENTER-LEFT;");
答案 1 :(得分:1)
在@ UrgurcanYildirim的答案(或使用外部样式表)中使用CSS是这个特定用例的最佳解决方案。
问题中的代码不起作用的原因是cellFactory
是属性并遵循通常的属性规则。特别是,如果您使用一个值调用setCellFactory(...)
并随后使用不同的值调用它,则第二个值将替换第一个值,第一个值将被丢弃。换句话说,TableColumn
只有一个cellFactory
。
对于您真正需要修改一个单元工厂返回的单元格的用例,您可以使用以下(基本上只是装饰器模式):
Callback<TableColumn<CargoItem, String>, TableCell<CargoItem, String>> defaultCellFactory
= TextFieldTableCell.forTableColumn();
cargoTableTypeCol.setCellFactory(col -> {
TableCell<CargoItem, String> cell = defaultCellFactory.call(col);
cell.setAlignment(Pos.CENTER_LEFT);
return cell ;
});