ホームページ > Java > &#&チュートリアル > JavaFX を使用して Java 9 で複数言語をサポートするグラフィカル インターフェイスを実装する方法

JavaFX を使用して Java 9 で複数言語をサポートするグラフィカル インターフェイスを実装する方法

WBOY
リリース: 2023-07-29 13:02:01
オリジナル
963 人が閲覧しました

Java 9 で JavaFX を使用して、多言語サポートのあるグラフィカル インターフェイスを実装する方法

はじめに:
グローバリゼーションの進展に伴い、多言語サポートがソフトウェア開発の重要な要件になりました。さまざまな言語のテキストを国際化することは、グラフィカル インターフェイスを開発するときに必要な手順です。 Java 9 では、JavaFX を使用して、複数言語をサポートするグラフィカル インターフェイスを実装できます。この記事では、JavaFX が提供する Resource Bundle メカニズムを使用して多言語サポートを実現する方法と、対応するサンプル コードを紹介します。

1. リソース ファイルの準備
プロジェクトでは、言語ごとにリソース ファイルを準備し、異なるリソース ファイルを読み込むことで多言語サポートを実現する必要があります。

1. リソース フォルダーの作成
プロジェクトの src/main/java ディレクトリに、resources という名前のフォルダーを作成します。このフォルダーは、さまざまな言語のリソース ファイルを保存するために使用されます。

2. リソース ファイルの作成
リソース フォルダー内に、言語ごとにリソース ファイルを作成します。リソース ファイルの命名規則は、baseName_ language.properties です。ここで、baseName はリソース ファイルの基本名、 language は言語の識別子です。たとえば、簡体字中国語テキストを保存するために、bundle_zh_CN.properties という名前のリソース ファイルを作成できます。

3. リソースの内容を入力します
リソース ファイルを開き、キーと値のペアに従って国際化する必要があるテキストを入力します。たとえば、次の内容を Bundle_zh_CN.properties ファイルに追加できます。

greeting=你好!
ログイン後にコピー
ログイン後にコピー

2. リソース ファイルのロード
JavaFX では、ResourceBundle クラスを使用してリソース ファイルをロードします。ロードするプログラム内のユーザーの言語に応じて、対応するリソース ファイルを選択する必要があります。

1. デフォルトの Locale を取得する
Locale は、言語、国、その他の情報を記述するクラスです。 java.util.Locale.getDefault() メソッドを使用して、現在のユーザーのデフォルトのロケールを取得できます。

2. ロケールに従ってリソース ファイルをロードする
ResourceBundle.getBundle() メソッドを使用して、対応するリソース ファイルをロードします。受信パラメータは、リソース ファイルの基本名とロケールです。たとえば、次のコードを通じて、bundle_zh_CN.properties ファイルをロードできます:

ResourceBundle bundle = ResourceBundle.getBundle("bundle", Locale.CHINA);
ログイン後にコピー

3. テキスト コンテンツの取得
リソース ファイルをロードした後、ファイル内のキーに基づいて対応するテキストを取得できます。リソースファイルの内容。

1. JavaFX でテキスト コンテンツを取得する
JavaFX では、@FxText アノテーションを付けることでテキストの国際化を実現できます。 FXML ファイルでこのアノテーションを使用し、対応するキーを設定する必要があります。たとえば、FXML ファイルに次のように記述できます:

<Text fx:id="greeting" text="%greeting" />
ログイン後にコピー
ログイン後にコピー

2. テキスト コンテンツの設定
JavaFX コントローラー クラスでは、ResourceBundle の getString() メソッドを呼び出してテキスト コンテンツを取得できます。対応するコントロールに適用します。たとえば、コントローラー クラスの初期化メソッドで次のように記述できます。

@FXML
private Text greeting;
bundle = ResourceBundle.getBundle("bundle", Locale.getDefault());
String greetingText = bundle.getString("greeting");
greeting.setText(greetingText);
ログイン後にコピー

4. 言語の切り替え
多言語サポートを実現するには、ユーザーに次の機能を提供する必要があります。言語を切り替えます。 JavaFX が提供するトリガー イベントを通じて言語切り替えを実装できます。

1. イベントのバインド
JavaFX コントローラー クラスでは、言語を切り替えるボタンまたはメニュー項目にトリガー イベントをバインドできます。たとえば、changeLanguageButton という名前のボタンにクリック イベントをバインドできます:

<Button fx:id="changeLanguageButton" onAction="#changeLanguageButtonClicked" />
ログイン後にコピー

2. イベントの処理
コントローラー クラスで、クリック イベントを処理するメソッドを実装します。この方法では、現在のロケールを変更し、リソース ファイルを再ロードし、インターフェイスを更新する必要があります。たとえば、changeLanguageButtonClicked() メソッドは次のように実装できます。

@FXML
private void changeLanguageButtonClicked() {
    if (Locale.getDefault().equals(Locale.CHINA)) {
        Locale.setDefault(Locale.US);
    } else {
        Locale.setDefault(Locale.CHINA);
    }
    bundle = ResourceBundle.getBundle("bundle", Locale.getDefault());
    String greetingText = bundle.getString("greeting");
    greeting.setText(greetingText);
}
ログイン後にコピー
ログイン後にコピー

結論:
JavaFX が提供するリソース バンドル メカニズムを使用することで、複数言語をサポートするグラフィカル インターフェイスを簡単に実装できます。この記事の導入により、誰もが JavaFX を使用して Java 9 で多言語サポートを実現する方法をマスターできると思います。この記事が皆さんの勉強に役立つことを願っています。

参照コード:
さまざまな言語のリソース ファイルの内容:
bundle_zh_CN.properties

greeting=你好!
ログイン後にコピー
ログイン後にコピー

bundle.properties

greeting=Hello!
ログイン後にコピー

@FXML ファイルで使用される FxText :

<Text fx:id="greeting" text="%greeting" />
ログイン後にコピー
ログイン後にコピー

コントローラー クラスでクリック イベントを処理するメソッド:

@FXML
private void changeLanguageButtonClicked() {
    if (Locale.getDefault().equals(Locale.CHINA)) {
        Locale.setDefault(Locale.US);
    } else {
        Locale.setDefault(Locale.CHINA);
    }
    bundle = ResourceBundle.getBundle("bundle", Locale.getDefault());
    String greetingText = bundle.getString("greeting");
    greeting.setText(greetingText);
}
ログイン後にコピー
ログイン後にコピー

以上がJavaFX を使用して Java 9 で複数言語をサポートするグラフィカル インターフェイスを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート