Как установить десятичный разделитель в зависимости от локали в таблице с помощью JavaFX - PullRequest
0 голосов
/ 07 марта 2019

Я пишу программу, которая решает проблему ранца. У меня есть несколько классов, которые решают проблему, упакованную в .jar, и я должен использовать это .jar в другом проекте. Один из этих классов называется Item и определяется тремя полями: String name, int weight и double value, а другой класс возвращает список всех этих элементов. Что мне нужно сделать, это показать в Table значения с разделителем, который устанавливается в зависимости от Locale.getDefault(). Один раз это . и один раз ,. То, что я пробовал, было tableColumnItemsValue.setCellValueFactory(pvt);, где pvt было бы чем-то, что устанавливает десятичный разделитель. Тогда я попробовал:

PropertyValueFactory pvt = new PropertyValueFactory("value").call(new DecimalFormatSymbols(Locale.getDefault()).getDecimalSeparator());

И, конечно, это не сработало, потому что я возвращаю char на PropertyValueFactoy. Я понятия не имею, как это сделать.

Вот мой код, прежде чем я начал «заставлять его работать»:

    listProperty = new SimpleListProperty<>();
    observableListOfItems = FXCollections.observableArrayList(listOfItems);
    listProperty.set(observableListOfItems);
    tableView.setItems(observableListOfItems);
    tableView.itemsProperty().bindBidirectional(listProperty);

    tableColumnItemsName.setCellValueFactory(new PropertyValueFactory<>("name"));
    tableColumnItemsWeight.setCellValueFactory(new PropertyValueFactory<>("weight"));
    tableColumnItemsValue.setCellValueFactory(new PropertyValueFactory<>("value"));

Не могли бы вы помочь?

1 Ответ

0 голосов
/ 11 марта 2019

Хорошо, я решил свою проблему.Если у кого-то была похожая проблема, вот решение:

tableColumnItemsValue.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Item, String>, ObservableValue<String>>() {
    @Override
    public ObservableValue<String> call(TableColumn.CellDataFeatures<Item, String> param) {
        double value = param.getValue().getItemValue();
        DecimalFormat df = new DecimalFormat("#.#", new DecimalFormatSymbols(Locale.getDefault()));
        return new SimpleStringProperty(df.format(value));
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...