2015-02-12 82 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插件目錄下。之後,無論何時建立產品,都會使用更改後的插件。

相關問題