JavaFX TableView maska FXML

0

W TableView przechowuję listę transakcji. Nazwa, data, kategoria oraz cena. Cenę przechowuję jako long, ale chcę, żeby wyświetlała się z przecinkiem przed ostatnimi 2 cyframi. Przykład: Dodaję transakcję i cenę wpisuję 123,45 -> w klasie oraz bazie danych zapamiętana jest jako 12345 i tak też wyświetla się w tableView, a chcę żeby wyświetlało 123,45. Poradziłem sobie jedynie z tym, że w textField podaję z przecinkiem, a dodaje się jako całkowita, natomiast nie mam pomysłu jak zrobić to w tableView. Jest jakaś sposób, żeby zastosować maskę? Najważniejsze elementy w kodzie wyglądają tak:

@FXML
private TableView<Transaction> transactionTable;
private ObservableList<Transaction> transactionData = FXCollections.observableArrayList();
......
@FXML
void initialize() {
priceColumn.setCellValueFactory(cellData -> cellData.getValue().getProduct().getPriceProperty());
...
1

spróbuj tak

priceColumn.setCellFactory(new Callback<TableColumn<Transaction, String>, TableCell<Transaction, String>>() {
            @Override
            public TableCell<Transaction, String> call(TableColumn<Transaction, String> param) {
                return new TableCell<Transaction, String>() {
                    @Override
                    protected void updateItem(String item, boolean empty) {
                        super.updateItem(item, empty);
                        if (empty) {
                            setText(null);
                        } else {
                            setText(item.substring(0, item.length()-2)+","+item.substring(item.length()-2));
                        }
                    }
                };
            }
        });
0

Działa, wielkie dzięki! Nie będę zakładał nowego wątku, a mam jeszcze 1 problem. Chcę w polu textField, gdzie przechowuję cenę (priceField), aby domyślnie był format (xx),xx. Czyli np. wprowadzam 1234, to wyświetla się 12,34. Gdy dopiszę 6 wyświetli się 123,46. Coś w tym stylu obecnie potrzebuję. Da się takie coś wymusić stylami css? Obecnie zrobiłem jedynie, aby byłą możliwość wprowadzania tylko liczb:

public void replaceText(int i, int i1, String text){
		if(text.matches("[0-9]") || text.isEmpty()){
			super.replaceText(i, i1, text);
		}
	}

1 użytkowników online, w tym zalogowanych: 0, gości: 1