javafx - 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;
所以,我的问题是。我如何将逗号替换为点?
解决方案
我用 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;
}
}
推荐阅读
- ruby - 使用 ruby 按名称和分数对记分牌进行排序
- javascript - 如何处理在两个日期之间进行验证的错误?
- javascript - 将 Laravel 数据传递给 Vue 组件
- android - 找不到方法 'com.android.tools.r8.Version.getVersionString()Ljava/lang/String;'
- spring - Grails 3.3.10 urlmapping 不再起作用
- javascript - 我在创建迁移时遇到了这个问题
- next.js - 可以全局获取 next.js 请求对象吗?
- ms-access - 如何获得组合框选择以用数据填充相关字段
- php - php中的会话数组问题
- android - 无法在 com.android.builder.core.AndroidBuilder.processResources