有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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);

}

共 (3) 个答案

  1. # 1 楼答案

    如果你有一个NumberFormat,你已经拥有了你所需要的一切。只需使用NumberFormat.parse而不是Double.parse。但是使用JFormattedTextField更容易(猜猜它从类名中做了什么。将所需的NumberFormat传递给构造函数,即new JFormattedTextField(nf)JFormattedTextField有一个getValue方法返回最后一次有效编辑,如果是NumberFormat,它将是一个Number

    了解你的图书馆

  2. # 2 楼答案

    按下按钮时,可以将逗号替换为点:

    String text=textfield.getText().replace(",",".");

    然后可以使用文本变量,而不是textfield。getText()

  3. # 3 楼答案

    提交时遍历文本字段,如果出现逗号,则替换为十进制。循环结束后,将字符串转换为double