首页 > 解决方案 > JavaFx:如何将逗号替换为 TextfieldTableCell 中的点

问题描述

我在这里做错了什么?

在此处输入图像描述

我尝试在我的 setOnEditCommit 上使用函数 replace(),但不起作用。

    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;

所以,我的问题是。我如何将逗号替换为点?

标签: javafx

解决方案


我用 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;
}

}


推荐阅读