Java 如何使JTextField接受以逗号作为分隔符的双精度值?

Java 如何使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

标题说明了一切。我得到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);

}

提交时遍历文本字段,如果出现逗号,则替换为十进制。循环后,将字符串转换为双精度,提交时迭代文本字段,如果出现逗号,则替换为十进制。循环后,将字符串转换为双精度,提交时迭代文本字段,如果出现逗号,则替换为十进制。循环后,将字符串转换为双精度,提交时迭代文本字段,如果出现逗号,则替换为十进制。循环将字符串转换为双精度后,按下按钮时,可以将逗号替换为点:

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时,我无法针对我的情况实现该解决方案。你为什么不这样做