EDIT
正如我前面提到(下面:-),JColorChooser的(以及大多數其他本地化預製組件)區域支持是次優的(又名:越野車)。直接設置其語言環境屬性不起作用。每個應用程序設置WORKSFORME(我的系統默認的是德國人),但:
Locale.setDefault(new Locale("es"));
這樣做在應用程序代碼得很早,最好在創建任何組件之前,提供了最好的機會,以獲得預期的非系統本地化文本。
原來的答覆(已經咆哮位)在Swing
本地化支持是三心二意,說得客氣一點。
問題的一部分是AWT與Swing之間的語言環境解析機制之間的阻抗不匹配:前者解決了父鏈,期望大多數子類具有null語言環境屬性,後者顯式設置了默認返回值通過JComponent.getDefaultLocale()在其生命的早期(在JComponent構造函數中)。問題的另一部分是setLocale適當地觸發了一個更改事件..但沒人聽。這對於像f.i這樣的預製容器具有戲劇性的後果。 JColorChooser:ui委託人應該更新所有孩子的locale屬性,但什麼也不做。 (很容易忽略 - 像datePicker這樣的SwingX組件有同樣的問題,希望現在修復;-)
更糟糕的是:由於某種原因,ui甚至不尊重JComponent上設置的默認值...
因此,使其完全遵守任何語言環境的唯一方法似乎是在Locale上設置默認語言環境,然後將其恢復(如果您只想在該語言環境中使用顏色選擇器,認爲這是你想要什麼:-)
Locale old = Locale.getDefault();
Locale.setDefault(new Locale("es"));
JColorChooser chooser = new JColorChooser(Color.RED);
Locale.setDefault(old);
啊啊啊..由UI安裝的所有面板(DefaultXXChooserPanel)是越野車中,他們得到了LO通過
// wrong:
UIManager.getString(somekey)
,而不是
// correct
UIManager.getString(somekey, appropriateLocale)
calized文本究竟你想:只有在不同的(不是系統)區域或所有用戶界面的顏色選擇? – kleopatra
我所有的現有用戶界面都遵循設置的自定義用戶界面。顏色選擇器將UI保持到系統的語言環境。 [英語]。顏色選擇器上有些未翻譯的位。例如示例文本和選項卡。 – monksy