编辑:这是不可能的,因为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
个实例显示.
而不是,
作为小数点分隔符。
我怎样才能实现这一目标?我会优先考虑全局设置,但是必须将它设置在各个小部件上也是可以的。
答案 0 :(得分:1)
由于getDecimalSeparator方法具有默认访问修饰符,因此无法通过继承更改其行为。在我们公司,我们有完全相同的需求,我们不得不改变包含Spinner类的插件的源代码。我们更改了Spinner类的源代码,以便我们可以覆盖getDecimalSeperator方法(使其公开)并重新打包jar(例如org.eclipse.swt.win32.win32.xxx.jar),然后将其放在delta-pack plugins目录下。之后,无论何时构建产品,都会使用已更改的插件。