java如何使JTextField接受以逗号作为分隔符的双值?
标题说明了一切。我得到NumberFormatException的原因很明显。因为我是北欧人,所以我想用逗号而不是点作为十进制分隔符,将双值输入我的JTextFields
public void actionPerformed(ActionEvent event2) {
NumberFormat nf = NumberFormat.getInstance(Locale.GERMAN);
double firstW = Double.parseDouble(firstWeight.getText());
double secondW = Double.parseDouble(secondWeight.getText());
double outcome = (firstW - secondW);
nf.setMaximumFractionDigits(2);
JLabel result = new JLabel();
result.setText(nf.format(outcome) +" kg" );
add(result);
setVisible(true);
}
# 1 楼答案
如果你有一个
NumberFormat
,你已经拥有了你所需要的一切。只需使用NumberFormat.parse
而不是Double.parse
。但是使用JFormattedTextField
更容易(猜猜它从类名中做了什么。将所需的NumberFormat
传递给构造函数,即new JFormattedTextField(nf)
。JFormattedTextField
有一个getValue
方法返回最后一次有效编辑,如果是NumberFormat
,它将是一个Number
了解你的图书馆
# 2 楼答案
按下按钮时,可以将逗号替换为点:
String text=textfield.getText().replace(",",".");
然后可以使用文本变量,而不是textfield。getText()
# 3 楼答案
提交时遍历文本字段,如果出现逗号,则替换为十进制。循环结束后,将字符串转换为double