GUIフォームの国際化

This tutorial needs a review. You can open a JIRA issue, or edit it in GitHub following these contribution guidelines.

次のチュートリアルで、NetBeans IDEでの国際化の基本的な手順の一部を紹介します。フォームの1つに国際化を設定し DIXCEL/ディクセル ブレーキパッド エクストラスピード フロント ホンダ CIVIC シビック 排気量1800 年式05/09~ 型式FD1 品番ES331226、後でそのフォームをデザインします。その後、いくつかの異なるパッケージに様々なフォームを含んでいるプロジェクト全体を国際化します。アプリケーションは、自動国際化を指定するか、特別なウィザードを使用して国際化できます。

予想される所要時間: 30分

Figure 1. このページの内容は、NetBeans IDE 7.0以降に適用されます

このチュートリアルを完了するには、次のソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン

NetBeans IDE

バージョン7.0以降

Java Development Kit (JDK)

バージョン6、7または8

Project μ プロジェクト ミュー ブレーキパッド VELVA EURO SPORTS Excellence リア Mercedes-Benz X1 W211(Sedan) 211072 E550

国際化によって、技術的な変更や再コンパイルを行わずに、様々な言語や地域にアプリケーションを対応させることができます。プログラムを国際化することによって、プログラム内でハードコーディングすることなく、ステータス・メッセージやGUIコンポーネント・ラベルなどのテキスト要素をソース・コードの外部に保存し、動的に読み出すことができます。

一般的に、国際化した文字列は、キーと値のペアの形式でプロパティ・ファイルに保存します。キーはプログラムがテキストを読み出すために使用する識別子で、値は実際のテキストです。プログラムを変換する各ロケール(または言語)に対して、プロパティ・ファイルを1つ作成します。キーは各ロケールで同じで、文字列のみが異なります。

IDEには、次の各操作を行うためのツールが用意されています。

  • GUIフォームまたはJavaプログラムの作成時に国際化文字列を挿入する

  • 個別ファイルまたはファイルのグループで、ハードコードされたすべての文字列を国際化された文字列で置換する

デザイン時のGUIフォームの国際化

この課題では、GUIビルダーを使用して作成された、よく知られている検索ダイアログを含む FREE CRUISER フリークルーザー 各種電子機器マウント・オプション CNC Aluminum Hook Mount Kit カラー:シルバー タイプ:IPHONE 5/5S ハンドルバー径:19-22mm、デモのJavaアプリケーション・プロジェクトを開きます。次に、フォームFindDialog.javaの自動国際化をオンに切り替えます。国際化されたGUIフォームをテストするために、プロパティ・ファイルに新しいロケールを追加し AME MODELART BRAZZER (モデラート ブレイザー) 20インチ 9.0J PCD:114.3 穴数:5 inset:33 Lo DISK ブラックフィニッシュ [ホイール単品4本セット]ky、デフォルト以外のロケールでフォームを実行します。

プロジェクト Project EURO ミュー Excellence 211072 Mercedes-Benz μ ブレーキパッド リア ブレーキパッド E550 SPORTS W211(Sedan) Mercedes-Benz

  1. コンピュータ上の任意の場所に、InternationalizeDemo.zipプロジェクトをダウンロードして解凍します。

  2. 「ファイル」>「プロジェクトを開く」を選択し、前のステップで抽出した InternationalizeDemo プロジェクトに移動して「開く」をクリックします。プロジェクト・フォルダは、 InternationalizeDemo という名前の含まれるフォルダ内にある場合もあります。

  3. 「ソース・パッケージ」>「demo」を展開し、 FindDialog.java をダブルクリックします。サンプル・フォームがGUIビルダーで開きます。

自動国際化をオンに切替え

  1. 「ナビゲータ」ウィンドウでルート・ノード( Form FindDialog )を選択します。

  1. 「プロパティ」ウィンドウで、「自動国際化」プロパティのチェックボックスを選択します。

  1. 「GUIフォーム形式のアップグレード」ダイアログ・ボックスで「アップグレード」をクリックします。

チェックボックスが選択されると、「 プロパティ・バンドル・ファイル 」プロパティで設定されているとおりに、IDEが demo パッケージ内に Bundle.properties ファイルを作成します。

``Bundle.properties`` ファイルを別の場所に置く必要がある場合は、「プロパティ・バンドル・ファイル」の右側の省略符号ボタン(...)をクリックして場所を選択するか、プロパティのテキスト・フィールドにパスを直接入力できます。
  1. 「プロジェクト」ウィンドウで、「プロジェクト」ウィンドウの「 Bundle.properties 」ノードをダブルクリックするか、またはノードを右クリックして「編集」を選択します。

プロパティ・ファイルがソース・エディタに表示されます。フォーム FindDialog.java に適切なキーと値がすべて生成されていることがわかります。各キーの名前は、フォームのファイル名とコンポーネントの変数名から派生されます。たとえば、キー FindDialog.jLabel1.text は、フォーム・ファイル FindDialog に配置された jLabel1 という変数名を持つコンポーネント用に生成されます。値 jLabel1 は、この例ではコンポーネントの「text」プロパティを表しています。

  1. Bundle.properties ファイルを閉じます。

個別のGUIコンポーネントの国際化

GUIビルダーを使用して、フォームのJLabelsおよびJButtonsの国際化文字列を入力します。

  1. デザイン領域で、適切なGUIコンポーネント(例: jLabel1 )を選択します。

  2. 「プロパティ」ウィンドウで、「text」プロパティの省略符号ボタン(…​)をクリックします。

注意: Mnemonic、Accessible Name、Accessible Descriptor、ToolTipなどの、文字列値を持つその他のプロパティも国際化できます。

  1. プロパティ・エディタがリソース・バンドル・モードに切り替わります。「バンドル名」フィールドが demo.Bundle に設定され、「キー」フィールドに文字列 FindDialog.jLabel1.text が含まれていることを確認します。

  2. 「値」フィールドに「 Find What: 」と入力します。

  3. 「OK」をクリックします。

すべてのコンポーネントで前述の手順を繰り返すと、フォームは次の図のようになります。

注意: ステップ1から5はより単純で、すばやい方法で実行できます。単にデザイン・ビューで「 jLabel1 」をダブルクリックし、テキストを「 jLabel1 」から「 Find What: 」に変更して、[Enter]を押します。結果は前述の手順と同じです。

コンポーネントを同じ幅にするには、次の手順を実行します。

  1. フォーム内の8つのjCheckBoxをすべて[Ctrl]を押しながらクリックして選択します。

  2. jCheckBoxが選択された状態で、いずれか1つを右クリックし、ポップアップ・メニューから「同じサイズ」>「同じ幅」を選択します。

  3. 3つのjButtonに対してステップ1から2を適用します。

新規ロケールの追加

  1. 「ナビゲータ」ウィンドウでルート・ノード( Form FindDialog ノード)を選択します。

  2. 「プロパティ」ウィンドウで、「デザイン・ロケール」プロパティの省略符号ボタン(…​)をクリックします。

  3. 「新規ロケール」ダイアログ・ボックスで、 「事前定義ロケール:」 コンボ・ボックスから 「es_ES」 を選択します。

  4. 「OK」をクリックします。

次に示すように、「 Bundle.properties 」ノードの下に新しいロケールが表示されます。

  1. 「プロジェクト」ウィンドウで、 Bundle.properties を右クリックして「開く」を選択します。

  2. 次に示すように、表の対応する列の個々のメッセージを、新しい言語(スペイン語など)に変換します。

  1. [Ctrl]-[S]を押して編集を保存します。

  2. FindDialog.java 」タブを選択して、国際化しているフォームを表示します。

  3. 「ナビゲータ」ウィンドウのルート・ノードを右クリックし、「フォームの再ロード」を選択します(または[Ctrl]+[R]を押します)。

  4. 表示される「質問」ダイアログ・ボックスで「保存」をクリックします。 フォームが再度開き、次に示すように、スペイン語ロケールがデザインにロードされます。

デフォルト以外のロケールのテスト

  1. 「プロジェクト」ウィンドウで、「InternationalizeDemo」プロジェクトを右クリックし、「プロパティ」を選択します。

  2. 「カテゴリ」ペインで、「実行」ノードを選択します。

  3. 「VMオプション」フィールドに「 -Duser.language=es -Duser.country=ES 」と入力します。

  1. 「OK」をクリックします。

  2. 「InternationalizeDemo」プロジェクトを右クリックし、「実行」を選択します。

次に示すように、IDEによって「 FindDialog 」ダイアログ・ボックスがスペイン語ロケールで実行されます。

プロジェクト全体の国際化

通常、デフォルト・ロケールには複数のファイルがあり、他の言語に変換するためにそれらを適用するように求められます。国際化ウィザードは、このタスクに対する完璧なツールで、一度に複数のファイルを国際化できます。この機能について、GUIフォームのサンプル・プロジェクト(Swing GUIのデザインのチュートリアルで作成したフォームが含まれる)で説明します。

サンプル・プロジェクトの作成

  1. 「ファイル」>「新規プロジェクト」を選択するか、IDEツールバーで「新規プロジェクト」アイコンをクリックします。

  2. 「カテゴリ」ペインで、

    Project μ プロジェクト ミュー ブレーキパッド EURO SPORTS Excellence リア Mercedes-Benz W211(Sedan) 211072 E550限定登場


    BMW 2シリーズツアラー(F45/46) 225/45R18 ヨコハマ iceGUARD6 iG60 ホイール :バラーレ 18×7.5 112/5 +51 3X169 輸入車 スタッドレス ホイールセット 4本


    Project μ プロジェクト ミュー ブレーキパッド EURO SPORTS Excellence リア Mercedes-Benz W211(Sedan) 211072 E550 【USA在庫あり】 コブラ COBRA ラゲッジラック 取り外し可能 1510-0289 JP店

    ↓↓↓ミシュラン Pilot Sport Cup2 サマータイヤ 215/45R17 MANARAY Euro Stream JL10 ホイールセット 4本 17インチ 17 X 7 +50 5穴 100;【送料無料】 PIRELLI ピレリ ウィンター アイスアシンメトリコ(限定) 245/45R17 99Q XL スタッドレスタイヤ単品1本価格;GS 450h/350/250 GWL/GRL 1# (2012.1~) エアロ3点セット スポーツライン アーティシャンスピリッツ, 14インチ サマータイヤ セット【適応車種:ザッツ(JD系)】HOT STUFF ラフィット LW-03 ブラックポリッシュ 4.5Jx14ZIEX ZE914F 165/55R14, RS-R RS-Rダウン 1台分 ダウンサス アコード CD6 H643W RSR RS★R DOWN ダウンスプリング バネ ローダウン コイルスプリング【店頭受取対応商品】, Project μ プロジェクト ミュー ブレーキパッド RACING N+ フロント BMW E82(Coupe) UC35 135i, ライツ ワゴンR MH34S ルームミラーカバー レッド 塗装済み;【プロジェクトミュー】RACING777(レーシングトリプルセブン) ニッサン ブルーバード BLUEBIRD用 HU14 (SR20DE)系 フロントブレーキパッド 品番:F232 【割引クーポン配布中】KARO/カロ WOOLY/ウーリー レガシィ/BP# リアゲートのみ(アウトバック・ツーリングワゴン用) 商品番号:1823↓↓↓APP (エーピーピー) AP-8000 ミツビシ リベロ CD8W 92.6~99.6 SFIDA (スフィーダ) ブレーキパッド, 【送料無料】 ピットワーク バッテリー 超高性能 Xシリーズ ダイハツ ムーヴ LA-L902S 用 AYBXL-44B19-01 車用 車 国産車 カーバッテリー バッテリー交換 PITWORK 自動車用バッテリー, モンロー ショックアブソーバー バンマグナム リア(2本セット) V1140×2 トヨタ ツーリングハイエース FR RCH41W/KCH40W 1999年08月~2002年05月, 【送料無料】 205/45R17 17インチ WEDS ウェッズ ライツレー DK 7J 7.00-17 YOKOHAMA ヨコハマ アドバン フレバV701 サマータイヤ ホイール4本セット【YOsum18】, RS-R RSR ダウンサス DOWN デミオ DY5W M604WR リア

    Project μ プロジェクトミュー ブレーキパッド B SPEC フロント ファミリア BHA7P/7R/8P/8R

    ↓↓↓↓↓↓


    ↓↓↓↓↓↓↓↓↓↓↓↓

    【T319】スペイド [H24/8-][NCP145] カジュアルG ベージュ Bellezza ベレッツァ シートカバー, brembo ブレンボ ブレーキパッド フロント セラミック トヨタ カリーナ ED ST200 ST201 93/9~98/4 P83 034N ブレーキ パッド 交換 部品 メンテナンス パーツ ポイント消化, キャラバン NV350 E26 フロントバンパー グリルカバー, [SPOON] スプーン リジカラ フロント用【マーチ K13 2WD】 本州は送料1600円、北海道・沖縄・離島は送料3000円(税別), 【送料無料】 235/50R18 18インチ CLIMATE SUW エクスカリバーユーロ 8J 8.00-18 DUNLOP ダンロップ ルマン V(ファイブ) サマータイヤ ホイール4本セット 輸入車【DUsum18】

    ブリヂストン REGNO レグノ GRV2 サマータイヤ 205/55R16 MKW MK-36 ダイヤカットグロスブラック ホイールセット 4本 16インチ 16 X 7 +42 5穴 114.3;ブリヂストン ECOPIA エコピア NH100 9月末迄 サマータイヤ 225/45R18 WEDS ウェッズ Leonis レオニス WX ホイールセット 4本 18インチ 18 X 7 +53 5穴 114.3 送料無料◆ADVAN Sport V105S◆235/45R17 97Y XL◆1本価格◆新品夏タイヤ◆ヨコハマタイヤ◆アドバン スポーツ DUNLOP ダンロップ WINTER MAXX 01 ウィンターマックス WM01 スタッドレス スタッドレスタイヤ 215/60R16 ブリヂストン BALMINUM T10 平座仕様(トヨタ車専用) ホイールセット 4本 16 X 6.5 +39 5穴 114.3;TOYOTIRES トーヨー トランパス MPZ ミニバン TRANPATH サマータイヤ 185/65R15 ENKEI PerformanceLine PF07 ホイールセット 4本 15 X 6 +45 4穴 100

    【WRX VA STI/S4 プローバ】WRX VA フロントバンパーフェース ダークグレーM(61K)塗装済;【E26 NV350 キャラバン ワイドボディ エアーズロックジャパン】NV350 キャラバン E26 DX ワイドボディ デッキカバー ラバータイプ フロント

    、「サンプル」>「Java」ノードを選択します。「プロジェクト」ペインで、「GUIフォームの例」を選択します。「次」をクリックします。

  3. 「プロジェクト名」フィールドに「 GUIFormExamples 」と入力し、プロジェクトの場所を指定します(例: /space/projects )。

  4. 「終了」をクリックします。

プロパティ・ファイルの準備

  1. 「ファイル」>「新規ファイル」を選択するか、IDEのツールバーで「新規ファイル」アイコンを選択します。

  2. 「カテゴリ」ペインで「その他」ノードを選択し 【代引不可】【受注生産品】SWAGE-LINE(スウェッジライン):ステンレスメッシュ ブレーキホース フロントホースキット CAF758、「ファイル・タイプ」ペインで「プロパティ・ファイル」を選択します。「次」をクリックします。

  3. 「ファイル名」フィールドに「 ContactEditor 」と入力します。

  4. 「参照」をクリックし、「フォルダを参照」ダイアログ・ボックスでファイルの場所として GUIFormExamples/src/examples フォルダを指定します。

  5. 「フォルダを選択」をクリックします。

  6. 「終了」をクリックします。

IDEによって ContactEditor.properties ファイルが作成され、ソース・エディタに表示されます。

前述の手順を繰り返し、別の Antenna.properties ファイルを作成します。

国際化ウィザードの呼出し

  1. メイン・メニューで、「ツール」>「国際化」>「国際化ウィザード」を選択します。

  2. ウィザードの最初のページで、「ソースを追加」をクリックします。

  3. 「ソースを選択」ダイアログ・ボックスで、「 ソース・パッケージ 」>「 examples 」ノードを展開し、[Ctrl]を押しながら Antenna.javaContactEditor.java 、および Find.java ファイルをクリックして選択します。

  4. 「OK」をクリックします。

次に示すように、ソース・ファイルがウィザードの最初のページに表示されます。

  1. デモの目的で、「 examples.Find 」を選択し、「ソースを除去」ボタンをクリックします。

  2. 「次」をクリックします。

  3. 国際化ウィザードが正しいプロパティ・ファイル examples.Antennaexamples.ContactEditor を提示するかどうかを確認します。提示しない場合、「リソースを選択」ボタンを使用して正しいプロパティ・ファイルを選択します。

  1. 「次」をクリックします。

  2. フィールドを作成する予定はないため、ウィザードの3ページ目をスキップし、追加の値を変更して「次」をクリックします。

  3. ハードコードされた文字列は、国際化ウィザードの最後のステップですべて表示されます。それらのうちどれがプロパティ・ファイルからのものかを判断できます(チェックボックスを使用)。文字列の省略符号ボタン(…​)をクリックして、個々のキー、値、コメント、および置換した文字列の書式をさらにカスタマイズできます。

  1. 「終了」をクリックします。

これでソース・コードの国際化は終了し、前述したように、他のロケールも追加したりテストしたりできます。

単一フォームの国際化

GUIフォームを国際化するには、自動国際化機能を使用するのが最も簡単な方法です。ただし、更新パックをインストールしていない場合、またはフォーム・エディタによって生成されていないコードも国際化する場合は、国際化ウィンドウを使用することをお薦めします。(この機能は、フォーム・エディタを使用して作成されたファイルのみでなく、任意の .java ファイルでも機能します)。次の例では、NetBeans IDEのデフォルト・インストールに含まれている国際化ウィンドウを使用します。

この最後の課題では、GUIフォームのサンプル・プロジェクトを再利用して、前の課題で除外したFind.javaフォームを国際化します。「国際化」ダイアログ・ボックスを呼び出して、このファイル内のハードコードされた文字列をすべて置換します。最後に、プログラムの記述時にソース・コードに国際化文字列を挿入する方法の簡単なデモを示します。

「国際化」ダイアログ・ボックスの使用

  1. 「プロジェクト」ウィンドウで、「 Find.java 」を選択し 、メイン・メニューから「ツール」>「国際化」>「国際化」を選択します。

IDEは、「国際化」ダイアログ・ボックスと、事前入力済の Find.java ソース・コードから最初にハードコードされた文字列を表示します。

  1. 「選択」をクリックして特定のプロパティ・ファイルを選択するか、または新しいプロパティ・ファイルを作成します。

  2. 「リソース・バンドルを選択」ダイアログ・ボックスで、「ファイル名」テキスト・フィールドに「 Find.properties 」と入力し、「新規作成」をクリックしてから「OK」をクリックします。

  3. 必要に応じて、置換された文字列、キー、値、またはコメントの書式を変更できます。デフォルトの値はそのままにします。

  4. 「置換」をクリックして変更を確認し、フォーカスを次のハードコードされた文字列に移動します。

ハードコードされた文字列を置換する必要がない場合は、「スキップ」ボタンをクリックします。

単一国際化文字列の挿入

  1. 「プロジェクト」ウィンドウで、 Find.java を右クリックして「編集」を選択します。

IDEは 【送料無料】 235/35R20 20インチ SUPER STAR スーパースター レオンハルト ラーゼン 8J 8.00-20 NITTO ニットー NT555 G2 サマータイヤ ホイール4本セット フジコーポレーション、ソース・エディタで Find.java ファイルを開きます。

  1. ソース・コードをスクロールし、mainメソッドを探します。

  2. mainメソッドに、次の太字の行を挿入します。

 public static void main(String args[]) {
 /* Set the Nimbus look and feel */
 //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
 /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
 * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
 */
 try {
 javax.swing.UIManager.LookAndFeelInfo[] installedLookAndFeels=javax.swing.UIManager.getInstalledLookAndFeels();
for (int idx=0; idx<installedLookAndFeels.length; idx++)
if ("Nimbus".equals(installedLookAndFeels[idx].getName())) {
 javax.swing.UIManager.setLookAndFeel(installedLookAndFeels[idx].getClassName());
break;
}
 } catch (ClassNotFoundException ex) {
 java.util.logging.Logger.getLogger(Find.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
 } catch (InstantiationException ex) {
 java.util.logging.Logger.getLogger(Find.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
 } catch (IllegalAccessException ex) {
 java.util.logging.Logger.getLogger(Find.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
 } catch (javax.swing.UnsupportedLookAndFeelException ex) {
 java.util.logging.Logger.getLogger(Find.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
 }
 //</editor-fold>
 *System.out.println();*
/* Create and display the form */
 java.awt.EventQueue.invokeLater(new Runnable() {
 public void run() {
 new Find().setVisible(true);
 }
 });
 }
  1. System.out.println(); の括弧内にカーソルを移動して、国際化文字列をパラメータとして挿入できるようにします。

  2. [Ctrl]-[Shift]-[J]を押して「国際化文字列を挿入」ダイアログ・ボックスを起動します(または、メイン・メニューから「ツール」>「国際化」>「国際化文字列を挿入」を選択できます)。

  3. 「バンドル名」で、「選択」ボタンをクリックし、 「ソース・パッケージ」>「examples」 フォルダを選択して、「ファイル名」テキスト・フィールドにバンドル名として「 Find 」と入力します。「OK」をクリックします。 「国際化文字列を挿入」ダイアログ・ボックスの「バンドル名」フィールドに、「 examples.Find 」と表示されます。

  4. 「キー」ドロップダウン・ボックスに「 Start 」と入力し、「値」フィールドに「 Start Find Dialog 」と入力します。「OK」をクリックします。

  1. 次のように、IDEが国際化文字列を挿入します。

 public static void main(String args[]) {
 /* Set the Nimbus look and feel */
 //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
 /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
 * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
 */
 try {
 javax.swing.UIManager.LookAndFeelInfo[] installedLookAndFeels=javax.swing.UIManager.getInstalledLookAndFeels();
for (int idx=0; idx<installedLookAndFeels.length; idx++)
if ("Nimbus".equals(installedLookAndFeels[idx].getName())) {
 javax.swing.UIManager.setLookAndFeel(installedLookAndFeels[idx].getClassName());
break;
}
 } catch (ClassNotFoundException ex) {
 java.util.logging.Logger.getLogger(Find.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
 } catch (InstantiationException ex) {
 java.util.logging.Logger.getLogger(Find.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
 } catch (IllegalAccessException ex) {
 java.util.logging.Logger.getLogger(Find.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
 } catch (javax.swing.UnsupportedLookAndFeelException ex) {
 java.util.logging.Logger.getLogger(Find.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
 }
 //</editor-fold>
* System.out.println(java.util.ResourceBundle.getBundle("examples/Find").getString("Start"));*
 /* Create and display the form */
 java.awt.EventQueue.invokeLater(new Runnable() {
 public void run() {
 new Find().setVisible(true);
 }
 });
 }

関連項目