用户界面- Java/SWT/JFace强制重新加载GUI



我有一个应用程序,应该改变其语言,而不必重新启动。它已经为不同的语言使用了Resourcebundles,但是由于菜单项和其他gui内容是在程序启动的前几秒钟生成的,所以我不能再更改它们的内容了。

你知道我能做什么吗?还是我必须跟踪每一个可能与gui相关的项目?

一个简单的选择是从头开始重新创建UI——不需要重新启动应用程序。

例如,您可以隐藏旧的Shell,然后显示具有相同状态但语言不同的新Shell。

如果这也不被接受…我只是在猜测……也许你可以用widget为每个小部件存储一个本地化键。setData(String, Object),然后在切换语言时使用Composite.getChildren()遍历小部件树——从Shell开始——并使用widget. getdata (String)获取每个小部件的资源键。然而,一个小部件可能有多个与之关联的可本地化字符串。

是的,您应该保留引用GUI对象的对象,以便您可以在用户选择新语言时更新其文本。

最新更新