我对JOptionPane.showConfirmDialog
有疑问。
我得到的按钮是Yes
,No
和Cancel
,但我想知道是否可以将这三个按钮本地化为我的语言?
我意识到我可以用我的JButtons
创建我自己的确认对话,但我想知道这是否也有可能。
提前致谢。
答案 0 :(得分:9)
简单的方法是使用所需的语言环境设置JOptionPane,如下所示:
Locale locale = new Locale("pt","BR");
JOptionPane.setDefaultLocale(locale);
如果你有一个单独的类来处理来自ResourceBundle的所有消息,那么你只需要在语言环境初始化中设置一次。例如:
public void setLocale(Locale locale) {
if (_bundle == null || !locale.equals(_locale)) {
_locale = locale;
_bundle = ResourceBundle.getBundle("resources.i18n.MessagesBundle", locale);
JOptionPane.setDefaultLocale(_locale);
_logger.info("Got new resource bundle for language-country: " + _locale.getLanguage() + "-" +
locale.getCountry());
}
}
干杯!
答案 1 :(得分:3)
这就够了:
UIManager.put("OptionPane.yesButtonText", "Ya");
等
答案 2 :(得分:1)
包含德语的大多数语言的标准对话框的所有本地化消息都由Swing PLAF资源包提供,您可以在JDK源中找到它们。参见例如对于英文消息:
相邻捆绑文件提供非英语语言的字符串值。
如果是一种很少使用的语言,只需再创建一个所需语言的文件并将其放在类路径的任何位置,就可以向这些系列中的任何一个添加一个包。 .java和.properties格式的捆绑包同样运行良好,但.java格式可能稍微更符合Unicode ...
尽管直接向com.sun
包添加内容可能会违反Java许可,但请记住这一点。因此,为了安全起见,将您的额外资源移至您自己的软件包并使用UIManager
注册它可能是明智之举:
UIManager.getDefaults().addResourceBundle("mypackage.swing.plaf.basic.resources.basic");