设置org.eclipse.swt.widgets.Spinner的小数点分隔符
问题描述:
编辑:这是不可能的,因为swt Spinner
小部件直接从操作系统获取小数点分隔符,而不是从Java虚拟机获取小数点分隔符。设置org.eclipse.swt.widgets.Spinner的小数点分隔符
我有一个德国应用程序,它使用默认,
作为小数分隔符。我想将应用程序中的所有小数分隔符的用法从,
更改为.
,而不更改区域设置,因为应用程序对于其他所有内容仍然需要德语。
纱厂创建这样的:
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插件目录下。之后,无论何时建立产品,都会使用更改后的插件。
你的纺纱厂从哪里得到它们显示的数据? – RealSkeptic 2015-02-12 09:19:04
spinner创建lke:spanWidthSpinner = new Spinner(parent,SWT.BORDER); spanWidthSpinner.setValues(0,1,Integer.MAX_VALUE,2,100,1000);我将这些信息添加到我的问题中。 – Markus 2015-02-12 09:24:49
你在应用程序中使用了哪个'Locale'? – Baz 2015-02-12 09:45:04