【问题标题】:Java/SWT/JFace forcefull reload of GUI?Java/SWT/JFace 强制重新加载 GUI?
【发布时间】:2011-07-31 21:45:49
【问题描述】:

我有一个应用程序应该无需重新启动即可更改其语言。它已经将 Resourcebundles 用于不同的语言,但由于菜单项和其他 GUI-stuf 是在程序启动的前几秒内生成的,因此我无法再更改它们的内容。

知道我能做什么吗?还是我必须跟踪所有可能的 GUI 相关项目?

【问题讨论】:

标签: java user-interface swt reload


【解决方案1】:

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

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

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

【讨论】:

  • 我试过了,但我无法从主窗口中分离出起始 porgram(它要求用户凭据)。 (程序不是我写的,所以我不确定哪些部分适合哪里)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-05
    • 2011-12-25
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多