JavaFX Float Column с двумя десятичными знаками - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу напечатать числа с плавающей точкой в ​​TableView с десятичными знаками.Но форматирование чисел с плавающей точкой нарушает сортировку столбца.

    TableColumn<Model, String> profit = new TableColumn<Model, String>("Profit");
    profit.setCellValueFactory(new PropertyValueFactory<Model, String>("profit"));
    profit.setCellValueFactory(cellData -> Bindings.format("%.2f", cellData.getValue().getProfit()));

enter image description here

Если я не форматирую столбец, сортировка выполняется правильно.Но в таблице каждый раз показаны не два десятичных знака.

    TableColumn<Model, Float> profit = new TableColumn<Model, Float>("Profit");
    profit.setCellValueFactory(new PropertyValueFactory<Model, Float>("profit"));

enter image description here

1 Ответ

0 голосов
/ 26 апреля 2018

Используйте ячейку значение фабрика, чтобы определить, какие данные отображают ячейки, и используйте фабрику ячеек, чтобы определить, как ячейки должны отображать эти данные:

TableColumn<Model, Float> profit = new TableColumn<Model, Float>("Profit");
profit.setCellValueFactory(new PropertyValueFactory<Model, Float>("profit"));
profit.setCellFactory(tc -> new TableCell<Model, Float>() {
    @Override
    protected void updateItem(Float profit, boolean empty) {
        super.updateItem(profit, empty);
        if (empty) {
            setText(null);
        } else {
            setText(String.format("%.2f", profit.floatValue()));
        }
    }
});
...