5

について質問がありJOptionPane.showConfirmDialogます。取得するボタンはYes、 、Noおよびですが、Cancelこれら 3 つのボタンを自分の言語にローカライズできないか疑問に思っていました。自分との確認ダイアログを自分で作成できることはわかっていますJButtonsが、これも可能かどうか疑問に思っていました.

前もって感謝します。

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");

于 2014-11-02T22:27:08.847 に答える
1

ドイツ語を含むほとんどの使用言語の標準ダイアログのすべてのローカライズされたメッセージは、Swing PLAF リソース バンドルによって提供され、JDK ソースで見つけることができます。英語のメッセージについては、次の例を参照してください。

英語以外の言語の文字列値は、隣接するバンドル ファイルによって提供されます。

また、めったに使用されない言語の場合は、目的の言語用のファイルをもう 1 つ作成し、それをクラスパスの任意の場所に配置するだけで、これらのファミリのいずれかにバンドルをもう 1 つ追加できます。.java 形式と .properties 形式のバンドルは同じように機能しますが、.java 形式の方がわずかに Unicode に適している可能性があります...

com.sunパッケージにコンテンツを直接追加すると Java ライセンスに違反する可能性があるので注意してください。安全のために、余分なリソースを独自のパッケージに移動し、次のUIManagerように登録することをお勧めします。

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