5

我有一个关于JOptionPane.showConfirmDialog. 我得到的按钮是和Yes,但我想知道是否可以将这三个按钮本地化为我的语言?我意识到我可以与我自己创建一个确认对话,但我想知道这是否也可能。NoCancelJButtons

提前致谢。

4

3 回答 3

13

简单的方法是使用所需的语言环境设置 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());
    }
}

干杯!

于 2013-08-12T14:25:57.187 回答
3

这就够了:

UIManager.put("OptionPane.yesButtonText", "Ya");

ETC

于 2014-11-02T22:27:08.847 回答
1

Swing PLAF 资源包提供了大多数使用语言的标准对话框的所有本地化消息,包括德语,您可以在 JDK 源中找到它们。参见例如英文消息:

非英语语言的字符串值由相邻的捆绑文件提供。

如果是一种很少使用的语言,您只需为所需语言再创建一个文件并将其放置在类路径的任何位置,就可以向这些系列中的任何一个再添加一个包。.java 和 .properties 格式的捆绑包同样工作良好,尽管 .java 格式可能对 Unicode 更友好...

com.sun尽管直接将内容添加到包中可能会违反 Java 许可证,但请记住这一点可能会很好。所以为了安全起见,将你的额外资源移动到你自己的包中并像这样注册它可能是明智的UIManager

UIManager.getDefaults().addResourceBundle("mypackage.swing.plaf.basic.resources.basic");
于 2016-03-31T08:59:40.767 回答