[英]I want to change the language of a SWT Application at Runtime. How to do that?
我正在為我的軟件工程課開發一個應用程序,其中之一是接口中必須有2種或更多種語言。 我已經實現了。 另一方面,要求用戶可以通過從組合框等中進行選擇來自行更改語言。
當我使用AWT和Netbeans時,我無法編輯表單的initComponents方法,因為它是自動生成的。 我在心中有以下選擇,但不知道它們是否還能工作,所以我正在尋求幫助。
-編輯類的構造函數,使其看起來像這樣:
public JFmyConstructor() {
initComponents(); //auto-generated
myInitMethod();
}
我想我會發現的問題是,我需要在接口已經運行之后調用構造函數一次(因此,所有對象都實例化了。是否有解決方法?
可能我的答案來得有點晚(可惜您輸入的標題錯誤)...
顯然,您無需調用任何構造函數即可在運行時切換語言。 在Java Desktop應用程序中,它很簡單:
Locale brazilian = new Locale("pt", "BR");
Locale.setDefault(brazilian);
當然,如果要通過JComboBox進行切換,則可能會有所不同。 我會做的是,實際上將創建一個模型(Swing提倡MVC設計模式)來保存數據(不同的語言環境),並在正確的ActionListener中設置默認語言環境。 不過這並不容易。
當然,我寧願使用本地名稱作為語言環境。 如果已構建它們,則可以通過簡單地調用getDisplayName()並將其自身作為參數傳遞來輕松獲得本地名稱Locale名稱:
String brazilianNativeName = brazilian.getDisplayName(brazilian);
對於某些語言環境,結果可能無法令人滿意(我相信不幸的是巴西葡萄牙語是其中的一種),但是您對此無能為力(除非您使用自己的字符串)。
老實說,對於兩種語言,我可能會改用一些鏈接。 您可以使用簡單的JLabel來做到這一點,只需設置正確的字體屬性和顏色並分配通用的ActionListener即可。 然后,您可以查詢實際單擊了哪一個,並適當地創建和設置Locale。 對於家庭作業來說應該足夠了。
SWT和NetBeans是一個奇怪的組合。 如果您可以使用SWT以“正常”方式進行操作並使用Eclipse,那么將有一套強大的工具來管理本地化,所有這些工具都是內置的。例如,請參見本介紹。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.