Ste*_*ier 6 java desktop swing locale internationalization
我确信有很多方法,但建议的方法是什么,对代码的影响最小?
显而易见的是,您创建了属性文件,但是如何在渲染中交换值?在J2EE中,您只需重新渲染整个页面,这样就很容易了.但是在Swing应用程序中,您是否只是在paintComponent(Graphics g)方法中添加.getProperty()的代码?
如果是这样的话,它看起来不是很重,因为现在你不得不在你不需要之前的任何地方覆盖这个方法......
附加:如何设置通知系统以重新呈现所有当前可见的组件而不强制某种注册模式?
我想如果我覆盖paintComponent(Graphics g),我所要做的就是触发一个事件已发生变化,并且将调用paintComponent(Graphics g)方法......
我想出的唯一解决方案是创建一个包含所有需要重新渲染的组件的大型注册表。然后,如果调用切换区域设置,您只需调用注册表,它将遍历所有注册的组件并调整它们的值。例如,对于所有已注册的 JLabels,它将执行以下操作
for(JLabel specificJLabel : REGISTRY.registeredJLabels)
{
String localeKey = specificJLabel.getActionCommand();
specificJLabel.setText(ResourceBundle.getString(localeKey));
}
Run Code Online (Sandbox Code Playgroud)
其中 Locale 键存储在组件 ActionCommand 中。然后,无论当前正在渲染什么屏幕,主父面板都负责重新渲染它。此外,这样注册表就不必管理区域设置键,它们与注册表完全解耦。每个组件负责管理其自己的 ResourceBundle 区域设置键。
| 归档时间: |
|
| 查看次数: |
2407 次 |
| 最近记录: |