2011-04-07 117 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对象的对象,以便在用户选择新语言时更新文本。