我想到的唯一解决方案是为所有需要重新渲染的组件创建一个大型注册表。然后,如果调用切换区域设置,则可以只调用注册表,它将遍历所有已注册的组件并调整其值。因此,例如,对于所有已注册的JLabel,它将按照
for(JLabel specificJLabel : REGISTRY.registeredJLabels){ String localeKey = specificJLabel.getActionCommand(); specificJLabel.setText(ResourceBundle.getString(localeKey)); }区域设置键存储在组件ActionCommand中的位置。然后,无论当前正在渲染什么屏幕,主父面板都负责重新渲染它。同样,通过这种方式,注册表也不必管理区域设置键,这些键与注册表完全分离。每个组件负责管理它自己的ResourceBundle的区域设置密钥。



