Is it possible to do different types of alignment for each cell in one column of TableView
?
E.g. I have a column with 3 possible types of data inside: positive number, negative number and "-". First should be aligned left, second - right and 3rd - center.
This is what I've tried:
private void setPositionAndColor(TableColumn<TransferItem, String> tableColumn){
tableColumn.setCellFactory(new Callback<TableColumn<TransferItem, String>, TableCell<TransferItem, String>>() {
@Override
public TableCell<TransferItem, String> call(TableColumn<TransferItem, String> column) {
TableCell<TransferItem, String> cell = new TableCell<TransferItem, String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
setText("");
} else {
setText(item);
if (item.matches("-+\\d.*")) {
setTextFill(Color.RED);
setTextAlignment(TextAlignment.RIGHT);
}
else if (item.equals("-")) {
setTextFill(Color.AQUA);
setTextAlignment(TextAlignment.CENTER);
}else {
setTextFill(Color.GREEN);
setTextAlignment(TextAlignment.LEFT);
}
}
}
};
return cell;
}
});
}
I added color changes just for testing and it works, but alignment doesn't.
Another approach:
Pos position;
private void setPositionAndColor(TableColumn<TransferItem, String> tableColumn){
tableColumn.setCellFactory(new Callback<TableColumn<TransferItem, String>, TableCell<TransferItem, String>>() {
@Override
public TableCell<TransferItem, String> call(TableColumn<TransferItem, String> column) {
TableCell<TransferItem, String> cell = new TableCell<TransferItem, String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
setText("");
} else {
setText(item);
if (item.matches("-+\\d.*")) {
setTextFill(Color.RED);
position = Pos.CENTER_RIGHT;
}
else if (item.equals("-")) {
setTextFill(Color.AQUA);
position = Pos.CENTER;
}else {
setTextFill(Color.GREEN);
position = Pos.CENTER_LEFT;
}
}
}
};
cell.setAlignment(position);
return cell;
}
});
}
Doesn't work either. Ty for help.