【问题标题】:How can I show 1000 as 1.000 in java spinner [duplicate]如何在 java spinner 中将 1000 显示为 1.000 [重复]
【发布时间】:2012-10-09 19:09:26
【问题描述】:

可能重复:
JSpinner editor locale

我必须在 java 的微调器中将 1000 值显示为 1.000,默认情况下显示为 1,000。但在欧洲地区,数字应该是 1.000,00 格式而不是 1,000.00 。有人可以帮我弄这个吗。我正在使用以下代码:

 JSpinner.NumberEditor editor = new JSpinner.NumberEditor(spinner, pattern);

 spinner.setEditor(editor);

并使用模式作为"##.##0",但这是抛出异常。 我可以为此编写通用代码,它可以根据语言环境(即 en、fr、pt 等)处理数字格式吗?

【问题讨论】:

  • 没有像欧洲语言环境这样的东西。欧洲的每个国家/地区都是单独的交易,因此不共享区域设置。 ;-)
  • 默认显示为 1,000 hmm ... 通常情况下,格式是本地化的,这意味着您机器上的默认语言环境 jdk 不支持使用逗号的语言环境或您的机器语言环境。所以问题是:你的语言环境是什么?
  • 我正在从服务器获取数据,服务器语言环境是法语。
  • 简单地说,如果我们暂时忘记语言环境,我需要做些什么才能在微调器中将 1,000 变为 1.000。
  • 您不能忘记语言环境,这就是重点 :-) 您希望将值格式化为适合 a 语言环境。因此,首先您必须决定 ui 应该显示的 哪个 语言环境。通常,这是客户端计算机的默认设置。如果你想在不同的语言环境中显示它,你必须在不同的语言环境中使用格式/ter。

标签: java swing localization number-formatting jspinner


【解决方案1】:

尝试显式创建或获取语言环境:

JSpinner spinner = new JSpinner();
String pattern = "0.000"; // valid format
JSpinner.NumberEditor editor = new JSpinner.NumberEditor(spinner, pattern);
DecimalFormat format = editor.getFormat();
Locale locale = new Locale("ru", "RU"); // create your specific locale
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols(locale);
format.setDecimalFormatSymbols(decimalFormatSymbols);
spinner.setEditor(editor);

【讨论】:

  • 上述代码在微调器中显示 1000 为 1000.000 ,我想要 1000 为 1.000 ,请提供要使用的格式。
  • 我猜这取决于语言环境。尝试将格式模式定义为pattern = "0,000";。我希望你能明白我的想法
猜你喜欢
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 2020-11-17
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多