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 サイトの他の関連記事を参照してください。