2011-04-07 115 views
2

我有一個應用程序,應該改變其語言,而無需重新啓動。它已經爲不同的語言使用了Resourcebundles,但是由於Menu-Items和其他GUI-stuf是在程序啓動的前幾秒內生成的,所以我無法再更改它們的內容。Java/SWT/JFace強制重新加載GUI?

任何想法我可以做什麼?或者我必須跟蹤每一個可能的GUI相關項目?

+0

hm ...我很想用這樣的東西http://www.javaspecialists.co.za/archive/Issue014.html – Dexter 2011-04-07 17:50:43

+0

那......真的很邪惡。 – 2011-04-07 18:51:59

回答

1

一個簡單的選擇是從頭開始重新創建UI--無需重新啓動應用程序。

例如,您可以隱藏舊的Shell,然後顯示一個具有相同狀態但語言不同的新Shell。

如果不是要麼接受......我猜測這裏...也許你可以存儲與Widget.setData(字符串對象),每個插件本地化鍵,然後切換時語言遍歷複合樹脂部件樹.getChildren() - 從Shell開始 - 使用Widget.getData(String)獲取每個小部件的資源鍵。但是,單個小部件可能有多個與其關聯的可本地化的字符串。

+0

我試過了,但是我不能從主窗口中分離開始的porgram(要求用戶憑據)。 (該程序不是由我寫的,所以我不確定哪個部分適合在哪裏) – Dexter 2011-04-07 19:04:04

0

是的,您應該保留引用GUI對象的對象,以便在用戶選擇新語言時更新文本。