@Override @SuppressWarnings("unchecked") public TableCell<S, T> call(TableColumn<S, T> p) { TableCell<S, T> cell = new TableCell<S, T>() { @Override public void updateItem(Object item, boolean empty) { if (item == getItem()) { return; } super.updateItem((T) item, empty); if (item == null) { super.setText(null); super.setGraphic(null); } else if (format != null) { super.setText(format.format(item)); } else if (item instanceof Node) { super.setText(null); super.setGraphic((Node) item); } else { super.setText(item.toString()); super.setGraphic(null); } } }; cell.setTextAlignment(alignment); switch (alignment) { case CENTER: cell.setAlignment(Pos.CENTER); break; case RIGHT: cell.setAlignment(Pos.CENTER_RIGHT); break; default: cell.setAlignment(Pos.CENTER_LEFT); break; } return cell; }