TableColumn priceCol = new TableColumn(\"Price\");
priceCol.setCellValueFactory(new PropertyValueFactory
Use a cell factory that generates cells that use a currency formatter to format the text that is displayed. This means the price will be formatted as a currency in the current locale (i.e. using the local currency symbol and appropriate rules for number of decimal places, etc.).
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
priceCol.setCellFactory(tc -> new TableCell() {
@Override
protected void updateItem(Double price, boolean empty) {
super.updateItem(price, empty);
if (empty) {
setText(null);
} else {
setText(currencyFormat.format(price));
}
}
});
Note this is in addition to the cellValueFactory
you are already using. The cellValueFactory
determines the value that is displayed in a cell; the cellFactory
determines the cell that defines how to display it.