2015-02-12 84 views
1

编辑:这是不可能的,因为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); 

我开始我的应用程序这样的:(需要注意的是,如果我设定的目标语言ende不要紧,分隔始终是一个,

-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实例显示.而不是,作为小数点分隔符。

我该如何做到这一点?我会优先考虑一个全局设置,但必须将其设置在单个小部件上也没关系。

+1

你的纺纱厂从哪里得到它们显示的数据? – RealSkeptic 2015-02-12 09:19:04

+0

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

+1

你在应用程序中使用了哪个'Locale'? – Baz 2015-02-12 09:45:04

回答

1

由于getDecimalSeparator方法具有默认访问修饰符,因此不可能通过继承来改变其行为。在我们公司,我们有完全相同的需求,我们必须更改包含Spinner类的插件的源代码。我们更改了Spinner类的源代码,以便我们可以重写getDecimalSeperator方法(使其公开)并重新打包该jar(例如org.eclipse.swt.win32.win32.xxx.jar),然后将其置于delta-pack插件目录下。之后,无论何时建立产品,都会使用更改后的插件。

相关问题