javafx TableView左对齐单列
我有一张工作正常的花车的桌面图。我这样做的目的是使单元格可以编辑,格式为货币等。所有单元格都正确对齐,正如人们所期望的数字字段一样 其中一列引用的是字符串而不是浮点值,浮点值也是可编辑的,使用TextFieldTableCell.forTableColumn方法也可以。 但是,我不知道如何左对齐字符串-它与其他列一样右对齐。我尝试使用.setAlignmentPos.CENTER_LEFT方法,但它仅在编辑单元格时左对齐。编辑后,它再次右对齐 以下是该专栏的片段:javafx TableView左对齐单列,java,tableview,javafx-8,Java,Tableview,Javafx 8,我有一张工作正常的花车的桌面图。我这样做的目的是使单元格可以编辑,格式为货币等。所有单元格都正确对齐,正如人们所期望的数字字段一样 其中一列引用的是字符串而不是浮点值,浮点值也是可编辑的,使用TextFieldTableCell.forTableColumn方法也可以。 但是,我不知道如何左对齐字符串-它与其他列一样右对齐。我尝试使用.setAlignmentPos.CENTER_LEFT方法,但它仅在编辑单元格时左对齐。编辑后,它再次右对齐 以下是该专栏的片段: cargoTableType
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());
下面是它的样子:
正如你所看到的,装有煤的电池没有左对齐。
我知道这很琐碎,但仍然令人沮丧。我建议您尝试以下方法:cargoTableTypeCol.setStyle-fx-alignment:CENTER-LEFT 使用CSS,如@UgurcanYildirim的答案或使用外部样式表,是这个特定用例的最佳解决方案 问题中的代码不起作用的原因是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 ;
});
你设置了两次电池工厂,所以你通过的第一个工厂没有效果。啊,谢谢你的提醒。那么,我如何将用于编辑的TextFieldTableCell.forTable列与用于格式化编辑值的setAlignment方法集成?添加了一个答案。在这个特定的用例中,我建议使用CSS,就像@UgurcanYildirim的回答一样。