Java 如何使JTextField接受以逗号作为分隔符的双精度值?
标题说明了一切。我得到NumberFormatException的原因很明显。因为我是北欧人,所以我想用逗号而不是点作为十进制分隔符,将双值输入我的JTextFieldsJava 如何使JTextField接受以逗号作为分隔符的双精度值?,java,swing,double,jtextfield,comma,Java,Swing,Double,Jtextfield,Comma,标题说明了一切。我得到NumberFormatException的原因很明显。因为我是北欧人,所以我想用逗号而不是点作为十进制分隔符,将双值输入我的JTextFields public void actionPerformed(ActionEvent event2) { NumberFormat nf = NumberFormat.getInstance(Locale.GERMAN); double firstW = Double.parseDouble(firstWeigh
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);
}
提交时遍历文本字段,如果出现逗号,则替换为十进制。循环后,将字符串转换为双精度,提交时迭代文本字段,如果出现逗号,则替换为十进制。循环后,将字符串转换为双精度,提交时迭代文本字段,如果出现逗号,则替换为十进制。循环后,将字符串转换为双精度,提交时迭代文本字段,如果出现逗号,则替换为十进制。循环将字符串转换为双精度后,按下按钮时,可以将逗号替换为点:
String text=textfield.getText().replace(“,”,”)代码>
然后可以使用文本变量,而不是textfield.getText() 按下按钮时,可以将逗号替换为点:
String text=textfield.getText().replace(“,”,”)代码>
然后可以使用文本变量,而不是textfield.getText() 按下按钮时,可以将逗号替换为点:
String text=textfield.getText().replace(“,”,”)代码>
然后可以使用文本变量,而不是textfield.getText() 按下按钮时,可以将逗号替换为点:
String text=textfield.getText().replace(“,”,”)代码>
然后可以使用文本变量,而不是textfield.getText() 如果你有一个NumberFormat
你就已经有了你所需要的一切。只需使用NumberFormat.parse
而不是Double.parse
。但是使用JFormattedTextField
更容易(从类名猜它做什么。将所需的NumberFormat
传递给构造函数,即newjformattedtextfield(nf)
。JFormattedTextField
有一个getValue
方法,它返回上一次有效编辑,如果是NumberFormat
,它将是一个Number
了解你的库如果你有一个NumberFormat
你已经拥有了你所需要的一切。只需使用NumberFormat.parse
而不是Double.parse
。但是如果你使用JFormattedTextField
(从类名猜它做了什么。将所需的NumberFormat
传递给构造函数,即newjformattedtextfield(nf)
。JFormattedTextField
有一个getValue
方法,该方法返回最后一次有效编辑,如果是NumberFormat
,它将是一个Number
了解你的库如果你有一个NumberFormat
你已经拥有了你所需要的一切。只需使用NumberFormat.parse
而不是Double.parse
。但是如果你使用JFormattedTextField
(从类名猜它做了什么。将所需的NumberFormat
传递给构造函数,即newjformattedtextfield(nf)
。JFormattedTextField
有一个getValue
方法,该方法返回最后一次有效编辑,如果是NumberFormat
,它将是一个Number
了解你的库如果你有一个NumberFormat
你已经拥有了你所需要的一切。只需使用NumberFormat.parse
而不是Double.parse
。但是如果你使用JFormattedTextField
(从类名猜它做了什么。将所需的NumberFormat
传递给构造函数,即newjformattedtextfield(nf)
。JFormattedTextField
有一个getValue
方法,该方法返回最后一次有效编辑,如果是NumberFormat
,它将是一个Number
了解你的库除非我遗漏了什么,否则我在JTextField类中看不到对用户输入的文本进行任何分析的任何内容。特别是,我不认为JTextField试图将文本转换为数字。因此,你必须在其他类中使用方法。请澄清你是如何进行转换的,并可能显示应该产生double
值的代码。在问题中添加了一些代码。但是,结果以正确的德语形式显示,带有逗号。可能是@mikeTheLiar的重复。在使用JTextField和JLabel时,我无法针对我的情况实现该解决方案。为什么不使用新的JFormattedTextField(nf)
?除非我遗漏了什么,否则我在JTextField类中看不到对用户输入的文本进行任何分析的任何内容。特别是,我不认为JTextField试图将文本转换为数字。因此,您必须在其他类中使用方法。请澄清您是如何进行转换的,并可能显示正在转换的代码用于生成double
值。在问题中添加了一些代码。但是,结果以正确的德语形式显示,带有逗号。可能是@mikeTheLiar的重复。在使用JTextField和JLabel时,我无法针对我的情况实现该解决方案。为什么不使用新的JFormattedTextField(nf)
?除非我遗漏了什么,否则我在JTextField类中看不到对用户输入的文本进行任何分析的任何内容。特别是,我不认为JTextField试图将文本转换为数字。因此,您必须在其他类中使用方法。请澄清您是如何进行转换的,并可能显示正在转换的代码用于生成double
值。在问题中添加了一些代码。但是,结果以正确的德语形式显示,带有逗号。可能重复@mikeTheLiar。在使用JTextField和JLabel时,我无法针对我的情况实现该解决方案。你为什么不这样做