JavaFx: как заменить запятую на точку в TextfieldTableCell - PullRequest
0 голосов
/ 29 апреля 2020

Что я здесь не так делаю?

enter image description here

Я пытался использовать функцию replace () на моем setOnEditCommit, но не работал.

    clnVt.setCellValueFactory(new PropertyValueFactory<>("valorVt"));
    clnVt.setEditable(true);
    clnVt.setCellFactory(TextFieldTableCell.forTableColumn(new DoubleStringConverter()));
    clnVt.setOnEditCommit(new EventHandler<CellEditEvent<GSTabela2, Double>>() {

        @Override
        public void handle(CellEditEvent<GSTabela2, Double> c) {
            Double valor = c.getTableView().getItems().get(c.getTablePosition().getRow()).valorVtProperty().getValue();
            String converte = valor.toString().replace(",", ".");
            c.getTableView().getItems().get(c.getTablePosition().getRow()).setValorVt(Double.valueOf(converte));


        }
    });

Затем я пытаюсь использовать реализацию DoubleStringConverter:

public class EstilizadoDoubleStringConverter extends DoubleStringConverter {
private final DoubleStringConverter conversor = new  DoubleStringConverter();

@Override
public Double fromString(String value) {
    try {
        value.replace(",", ".");

        return conversor.fromString(value);
    } catch (NumberFormatException e) {
        e.getStackTrace();
    }
    return -1.0;
}

@Override
public String toString(Double value) {

    try {
        return conversor.toString(value);
    } catch (NumberFormatException e) {
        e.getStackTrace();
    }

    return null;
}

}

Если я использую DoubleStringConverter, то получим -1,0;

Итак, мой вопрос есть. Как я могу заменить запятую на точку?

1 Ответ

1 голос
/ 29 апреля 2020

Я исправляю с помощью Slaw Hint.

В моей реализации DoubleStringConverter я меняю

private final DoubleStringConverter conversor = new  DoubleStringConverter();

на

private final Locale local = Locale.getDefault(Category.FORMAT);
private final NumberStringConverter conversor = new  NumberStringConverter(local);

, так что вся моя реализация теперь похожа на это.

public class EstilizadoDoubleStringConverter extends DoubleStringConverter {

private final Locale local = Locale.getDefault(Category.FORMAT);
private final NumberStringConverter conversor = new  NumberStringConverter(local);

@Override
public Double fromString(String value) {
    try {


        return conversor.fromString(value).doubleValue();
    } catch (NumberFormatException e) {
        e.getStackTrace();
    }
    return -1.0;
}

@Override
public String toString(Double value) {

    try {
        return conversor.toString(value);
    } catch (NumberFormatException e) {
        e.getStackTrace();
    }

    return null;
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...