【问题标题】:Make input field auto format number with dot separator using JTextfield in Java (Netbeans)使用Java(Netbeans)中的JTextfield使用点分隔符使输入字段自动格式化数字
【发布时间】:2013-05-22 07:52:28
【问题描述】:

我是 Java 新手 在我的第一个 Java 程序(使用 Netbeans)中,我想用点“。”添加输入字段自动格式编号。使用 JTextfield 的分隔符。 这是我的短代码:

private void PayTransKeyReleased(java.awt.event.KeyEvent evt) {                                       
// TODO add your handling code here:
String b;
b = PayTrans.getText();
if (b.isEmpty()){
    b = "0";
}
else {
    b = b.replace(".","");
    b = NumberFormat.getNumberInstance(Locale.ENGLISH).format(Double.parseDouble(b));
    b = b.replace(",", ".");
}
PayTrans.setText(b);
}

但我觉得不够完美,因为插入符号/光标无法通过键盘上的箭头键移动。我尝试搜索更好的代码,但我从未找到它。有没有人有解决方案?谢谢。

【问题讨论】:

    标签: java netbeans add separator


    【解决方案1】:

    您应该改用JFormattedTextField

    private DecimalFormatSymbols dfs;
    private DecimalFormat dFormat;
    
    dfs = new DecimalFormatSymbols();
    dfs.setDecimalSeparator('.'); //separator for the decimals
    dfs.setGroupingSeparator(','); //separator for the thousands
    dFormat = new DecimalFormat ("#0.##", dfs);
    
    JFormattedTextField ftf = new JFormattedTextField(dFormat);
    

    Here's关于自定义格式的链接。

    【讨论】:

    • 谢谢,好主意。但是当我输入千数时,结果不会直接在 JFormattedTextField 中查看。结果是我将焦点移到其他对象后的新视图。
    • 这就是 JFormattedTextField 的工作方式。愿你检查这个链接stackoverflow.com/questions/8383975/…
    【解决方案2】:

    更改语言环境。

    ENGLISH 中,千位分隔符, 和小数分隔符为.。在大陆语言中,例如FRENCH,情况正好相反。

    您还可以使用NumberFormat 以区域设置感知方式解析数字。您不需要进行任何替换。

    【讨论】:

    • 谢谢,我改成德语了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2019-12-20
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多