4

Java 使用小数形式的句点,例如 1/2 = 0.5

有没有办法让它使用逗号,比如 1/2 = 0,5?并且不使用逗号表示数千(如十万 = 100,000)而是使用空格代替(100 000)?

说到输出,我想我可以使用各种字符串格式函数,但问题是输入(JTable)。有些列需要双格式,因此用户必须输入类似 45.5 的内容,在这些部分中,他们习惯于 45,5 :) 提前致谢

更新:

我尝试使用 myTable.setDefaultLocale(Locale.Germany); 但它没有用。我也做了 Locale.setDefault(Locale.Germany); @ main 函数,它确实有效,但以相当愚蠢的方式工作:当单元格处于编辑模式时,您必须正常输入点,即 45.5,但您按 Enter 确认更改后,它显示为逗号:45,5。我的意思是它使用逗号仅用于显示目的,但在编辑它仍然相同的 ol' dot 时。

有没有办法在编写自定义表模型的情况下修复它?

4

3 回答 3

5

看看Formatting and Parsing a Number for a Locale

// Format for CANADA locale
Locale locale = Locale.CANADA;
String string = NumberFormat.getNumberInstance(locale).format(-1234.56); // -1,234.56

// Format for GERMAN locale
locale = Locale.GERMAN;
string = NumberFormat.getNumberInstance(locale).format(-1234.56); // -1.234,56

// Format for the default locale
string = NumberFormat.getNumberInstance().format(-1234.56);


// Parse a GERMAN number
try {
    Number number = NumberFormat.getNumberInstance(locale.GERMAN).parse("-1.234,56");
    if (number instanceof Long) {
        // Long value
    } else {
        // Double value
    }
} catch (ParseException e) {
}
于 2010-01-16T03:05:13.230 回答
2

因此,您基本上想假定为数字格式的本地化 表示转换为 a ,反之亦然?StringNumber/BigDecimal

那里你有java.text.DecimalFormat。要了解更多信息,请参阅Sun 自己的关于该主题的教程。

要本地化您的 Swing 应用程序,请使用JComponent#setDefaultLocale(). 例如

JComponent.setDefaultLocale(Locale.GERMANY);
于 2010-01-16T03:08:11.830 回答
1

要正确处理输入,您可以实现自己的 TableModel 并覆盖 setValueAt 方法。

于 2010-01-16T05:28:37.557 回答