Javaアプリケーションへのファイル・チューザの追加

執筆: Petr Dvorak(2009年12月)、管理: Alyona Stashkova

このチュートリアルでは、javax.swing.JFileChooserコンポーネントを使用してJavaアプリケーションにファイル・チューザを追加する方法を示します。すべてを手書きでコーディングすることもできますが、一部の作業を省略できるNetBeans GUIビルダーを使用する方法をお薦めします。課題の一環として、.txtファイルをテキスト領域にロードする、小さなJavaアプリケーションを作成します。

ファイル・チューザを使用した完成版プロジェクトをダウンロードできます。

目次

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

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

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE バージョン7.0またはそれ以降
Java Development Kit (JDK) バージョン6、7または8

アプリケーションの作成

まず、新しいJavaアプリケーションを作成します。

  1. メイン・メニューから「ファイル」>「新規プロジェクト」を選択します。「Java」カテゴリおよび「Javaアプリケーション」のプロジェクト・タイプを選択します。「次」をクリックします。
  2. 「プロジェクト名」に「JFileChooserDemo」と入力し、プロジェクトの場所を指定します。
  3. 「メイン・クラスの作成」チェックボックスを選択解除します。

    新規プロジェクト・ウィザード

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

アプリケーション・フォームの作成

この項では、JFrameコンテナを作成し、そこにいくつかのコンポーネントを追加します。

JFrameフォームを作成するには:

  1. 「ソース・パッケージ」ノードを右クリックし、「新規」>「その他」を選択します。「Swing GUIフォーム」カテゴリおよび「JFrameフォーム」ファイル・タイプを選択します。「次」をクリックします。
  2. 「クラス名」に「JFileChooserDemo」と入力します。
  3. 「パッケージ」に「jfilechooserdemo.resources」と入力します。

    作成中の新しいJFrameコンテナ

  4. 「終了」をクリックします。
  5. 「プロパティ」ウィンドウで、「タイトル」プロパティに「デモ・アプリケーション」と入力し、[Enter]を押して確認します。

JFrameフォームにコンポーネントを追加するには:

  1. パレットで「Swingメニュー」カテゴリを開き、「メニュー・バー」コンポーネントを選択して、それをJFrameの左上隅にドラッグします。

    注意: パレットが表示されない場合は、メイン・メニューから「ウィンドウ」>「パレット」を選択します。

    JFrameフォームに追加されているメニュー・バー

  2. 「メニュー・バー」コンポーネントの「編集」項目を右クリックし、コンテキスト・メニューの「削除」を選択します。
  3. 実行中のアプリケーションからFileChooserを開くことができるメニュー項目を追加するには、パレットの「Swingメニュー」カテゴリで新しい「メニュー項目」(JMenuItem1)を選択し、それを「メニュー・バー」にドラッグして「メニュー・バー」の「ファイル」項目にドロップします。

    メニュー・バーに追加されているメニュー項目

    注意: 別の「メニュー項目」をドラッグする場合は、それが「メニュー・バー」に追加されるように、その前に「メニュー・バー」が選択されていることを確認してください。

  4. 「デザイン」ビューで「jMenuItem1」を右クリックし、コンテキスト・メニューから「変数名を変更」を選択します。項目の名前を「Open」に変更し、「OK」をクリックします。
  5. 「デザイン」ビューで「jMenuItem1」が引続き選択されていることを確認します。[Space]バーを押して、コンポーネントのテキストを編集します。テキストを「開く」に変更し、[Enter]を押して確認します。
  6. 「開く」メニュー項目のアクション・ハンドラを指定します。メニュー項目を右クリックし、コンテキスト・メニューから「イベント」>「アクション」>「actionPerformed」を選択します。GUIビルダーによって自動的に「ソース」ビューに切り替えられ、OpenActionPerformed()という名前の新しいイベント・ハンドラ・メソッドが生成されます。「ナビゲータ」ウィンドウは次のようになります。

    メニュー・バーに追加されているメニュー項目

  7. 作成されているアプリケーションからFileChooserを終了するためのメニュー項目を追加するには、「デザイン」モードに戻ってパレットの「Swingメニュー」カテゴリで「メニュー項目」(JMenuItem1)を選択し、それを「開く」メニュー項目の下にある「メニュー・バー」にドラッグします。オレンジ色の強調表示はJMenuItem1が配置される場所を示しています。

    強調表示

  8. 「デザイン」ビューで「jMenuItem1」を右クリックし、コンテキスト・メニューから「変数名を変更」を選択します。項目の名前を「Exit」に変更し、「OK」をクリックします。
  9. 「デザイン」ビューで「jMenuItem1」が引続き選択されていることを確認します。[Space]バーを押して、コンポーネントのテキストを編集します。テキストを「終了」に変更し、[Enter]を押して確認します。
  10. 「終了」メニュー項目のアクション・ハンドラを指定します。メニュー項目を右クリックし、コンテキスト・メニューから「イベント」>「アクション」>「actionPerformed」を選択します。GUIビルダーによって自動的に「ソース」ビューに切り替えられ、ExitActionPerformed()という名前の新しいイベント・ハンドラ・メソッドが生成されます。「ナビゲータ」ウィンドウの「OpenActionPerformed()」ノードの下に「ExitActionPerformed」ノードが表示されます。
  11. 「終了」メニュー項目を機能させるには、ExitActionPerformed()メソッドの本文に次のソースを追加します。
    			 System.exit(0); 
  12. 「デザイン」モードに戻ります。次の図に示すように、パレットの「Swingコントロール」カテゴリから「テキスト領域」(JTextArea)をフォームにドラッグします。

    JFormに追加されているテキスト領域

  13. 追加されたコンポーネントのサイズを変更して、後でファイル・チューザによって表示されるテキストの領域を確保します。変数の名前を「textarea」に変更します。フォームは次のスクリーンショットのようにします。

    Javaアプリケーション - GUIビルダー

これで、このチュートリアルのベースとなる単純なJavaアプリケーションが設定されました。次に、実際のファイル・チューザを追加します。

ファイル・チューザの追加

  1. まだ開いていない場合は、「ウィンドウ」>「ナビゲート」>「ナビゲータ」を選択して「ナビゲータ」ウィンドウを開きます。
  2. ナビゲータで、Other Componentsノードを右クリックします。コンテキスト・メニューから、「パレットから追加」>「Swingウィンドウ」>「ファイル・チューザ」を選択します。

    パレットから追加」コンテキスト・メニューのかわりに、パレットの「Swingウィンドウ」カテゴリから、JFileChooserコンポーネントをGUIビルダーの白い領域にドラッグ・アンド・ドロップすることもできます。それでも同じ結果になりますが操作が難しくなり、JFileChooserのプレビューが非常に大きいため、ウィンドウを誤ってパネルに挿入して望まない結果になる可能性があります。

  3. ナビゲータを見ると、JFileChooserがフォームに追加されたことを確認できます。
  4. JFileChooser」ノードを右クリックし、変数の名前を「fileChooser」に変更します。

    追加されたファイル・チューザ - ナビゲータ・ビュー

これで、ファイル・チューザが追加されました。次に、目的のタイトルが表示されるようにファイル・チューザを調整し、カスタム・ファイル・フィルタを追加し、さらにファイル・チューザをアプリケーションに統合します。

ファイル・チューザの構成

「開く」アクションの実装

  1. 「ナビゲータ」ウィンドウでクリックして「JFileChooser」を選択してから、そのプロパティを「プロパティ」ダイアログ・ボックスで編集します。「dialogTitle」プロパティを「This is my open dialog」に変更し、[Enter]を押して「プロパティ」ダイアログ・ボックスを閉じます。
  2. GUIビルダーで「ソース」ボタンをクリックして「ソース」モードに切り替えます。ファイル・チューザをアプリケーションに統合するには、次のコード・スニペットを既存のOpenActionPerformed()メソッドに貼り付けます。
    private void OpenActionPerformed(java.awt.event.ActionEvent evt) {
        int returnVal = fileChooser.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            try {
              // What to do with the file, e.g. display it in a TextArea
              textarea.read( new FileReader( file.getAbsolutePath() ), null );
            } catch (IOException ex) {
              System.out.println("problem accessing file"+file.getAbsolutePath());
            }
        } else {
            System.out.println("File access cancelled by user.");
        }
    } 

    注意: このコード・スニペットの最初と最後の行は、ソース・ファイル内の既存の行と重複するため、除去してください。

  3. エディタによってコード内のエラーが報告された場合は、コード内の任意の場所を右クリックして「インポートを修正」を選択するか、または[Ctrl]+[Shift]+[I]を押します。「すべてのインポートを修正」ダイアログ・ボックスで、デフォルトを受け入れてインポート文を更新し、「OK」をクリックします。

このように、FileChooserのgetSelectedFile()メソッドをコールしてユーザーがクリックしたファイルを判定し、それを処理できます。この例では、ファイルの内容を読み取ってテキスト領域に表示します。

ファイル・フィルタの実装

次に、ファイル・チューザに*.txtファイルのみが表示されるようにする、カスタム・ファイル・フィルタを追加します。

  1. 「デザイン」モードに切り替えて、「ナビゲータ」ウィンドウで「fileChooser」を選択します。
  2. 「プロパティ」ウィンドウで、「fileFilter」プロパティの横にある省略符号(...)ボタンをクリックします。
  3. 「fileFilter」ダイアログ・ボックスで、コンボ・ボックスから「カスタム・コード」を選択します。

    開かれたコンボ・ボックス

  4. テキスト・フィールドに「new MyCustomFilter()」と入力します。「OK」をクリックします。
  5. このカスタム・コードを機能させるには、FileFilterクラスを拡張する内部(または外部)クラスMyCustomFilterを記述します。次のコード・スニペットをクラスのソースのインポート文の下にコピーして貼り付け、このフィルタを実装する内部クラスを作成します。
        class MyCustomFilter extends javax.swing.filechooser.FileFilter {
            @Override
            public boolean accept(File file) {
                // Allow only directories, or files with ".txt" extension
                return file.isDirectory() || file.getAbsolutePath().endsWith(".txt");
            }
            @Override
            public String getDescription() {
                // This description will be displayed in the dialog,
                // hard-coded = ugly, should be done via I18N
                return "Text documents (*.txt)";
            }
        } 

注意: より高性能で切替え可能なファイル・フィルタを実装する方法を学習するには、addChoosableFileFilterメソッドを参照してください。

アプリケーションの実行

  1. 「JFileChooserDemo」プロジェクトを右クリックし、「実行」を選択してサンプル・プロジェクトを開始します。
  2. 「プロジェクトの実行」ダイアログ・ボックスで「jfilechooserdemo.resources.JFileChooserDemo」メイン・クラスを選択し、「OK」をクリックします。

    実行

  3. 実行中のデモ・アプリケーションで、「ファイル」メニューの「開く」を選択してアクションをトリガーします。結果は次のようになります。

    JFileChooserデモ - 結果

  4. アプリケーションを終了するには、「ファイル」メニューの「終了」を選択します。

他にも、GUIパレットのColorChooserやOptionPaneなどの便利なSwingウィンドウやダイアログを試してみてください。


次の手順

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo