编辑:这是不可能的,因为 swt Spinner
小部件直接从操作系统而不是从 Java VM 获取小数分隔符。
我有一个德语应用程序,它使用默认的 ,
作为小数分隔符。我想将应用程序中所有小数分隔符的使用从 ,
更改为 .
而不更改区域设置,因为应用程序在其他方面仍然需要是德语。
旋转器的创建方式如下:
Spinner spanWidthSpinner = new Spinner(parent, SWT.BORDER);
spanWidthSpinner.setValues(0, 1, Integer.MAX_VALUE, 2, 100, 1000);
我像这样启动我的应用程序:(请注意,如果我将目标语言设置为 en
或 de
并不重要,分隔符始终为 ,
。
-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}
我尝试设置以下内容,但完全没有效果:
DecimalFormatSymbols.getInstance().setDecimalSeparator('.');
我还尝试设置以下本地: Locale.setDefault(new Locale("en", "US"));
这也始终显示 ,
作为小数分隔符,而不是 。
。
基本上,我希望我的 org.eclipse.swt.widgets.Spinner
实例显示 .
而不是 ,
作为小数分隔符。
我怎样才能实现这一目标?我更喜欢全局设置,但必须在单个小部件上设置它也可以。
最佳答案
由于 getDecimalSeparator 方法具有默认访问修饰符,因此不可能通过继承来更改其行为。在我们公司,我们有完全相同的需求,我们必须更改包含 Spinner 类的插件的源代码。我们更改了 Spinner 类的源代码,以便可以重写 getDecimalSeperator 方法(将其公开)并重新打包 jar(例如 org.eclipse.swt.win32.win32.xxx.jar),然后将其放在 delta-pack 插件目录下。此后每当构建产品时,都会使用更改后的插件。
关于java - 设置 org.eclipse.swt.widgets.Spinner 的小数点分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28473075/