Java GUIアプリケーションでのイメージの処理

目次

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

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

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE バージョン7.4
Java Development Kit (JDK) バージョン6または7

概要

アプリケーションでのイメージの処理は、多くのJava初心者プログラマにとって共通の課題です。Javaアプリケーションでイメージにアクセスする標準的な方法は、getResource()メソッドを使用することです。このチュートリアルでは、IDEのGUIビルダーを使用して、アプリケーションにイメージ(および他のリソース)を含めるためのコードを生成する方法を説明します。さらに、IDEでイメージ処理コードを生成する方法をどのようにカスタマイズするかについても学びます。

このチュートリアルで作成するアプリケーションは、単一のイメージを表示するJLabelを1つ含む、単純なJFrameです。

アプリケーションの作成

  1. 「ファイル」>「新規プロジェクト」を選択します。
  2. 新規プロジェクト・ウィザードで、「Java」>「Javaアプリケーション」を選択し、「次」をクリックします。
  3. 「プロジェクト名」に「ImageDisplayApp」と入力します。
  4. 「メイン・クラスの作成」チェックボックスを選択解除します。

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

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

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

この項では、JFrameフォームを作成し、JLabelをフォームに追加します。

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

  1. 「プロジェクト」ウィンドウで、「ImageDisplayApp」ノードを展開します。
  2. 「ソース・パッケージ」ノードを右クリックし、「新規」>「JFrameフォーム」を選択します。
  3. 「クラス名」に「ImageDisplay」と入力します。
  4. 「パッケージ名」に「org.me.myimageapp」と入力します。
  5. 「終了」をクリックします。

JLabelを追加するには:

  • 「パレット」で「ラベル」コンポーネントを選択し、JFrameにドラッグします。

この段階で、フォームは次のイメージのように表示されているはずです。

ラベルを追加して生成されたフォーム

イメージ用のパッケージの追加

アプリケーションでイメージまたは他のリソースを使用する場合は、通常、リソース用のJavaパッケージを別途作成します。ローカル・ファイル・システムでは、パッケージはフォルダに対応します。

イメージ用のパッケージを作成するには:

  1. 「プロジェクト」ウィンドウで、「org.me.myimageapp」ノードを右クリックし、「新規」>「Javaパッケージ」を選択します。

    新規Javaパッケージの追加

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

「プロジェクト」ウィンドウでは、Source Packagesフォルダ内に新規パッケージが表示されているはずです。

「プロジェクト」ウィンドウ

ラベルでのイメージの表示

このアプリケーションでは、イメージがJLabelコンポーネント内に埋め込まれます。

イメージをラベルに追加するには:

  1. GUIデザイナで、フォームに追加したラベルを選択します。
  2. 「プロパティ」ウィンドウで、「プロパティ」カテゴリをクリックし、アイコン・プロパティまでスクロールします。
  3. 省略符号(...)ボタンをクリックします。
    アイコン・プロパティ・エディタが表示されます。

    アイコン・プロパティ・エディタ

  4. アイコン・プロパティのダイアログ・ボックスで、「プロジェクトにインポート」をクリックします。
  5. ファイル・チューザで、システム上にある、使用するイメージに移動します。「次」をクリックします。
  6. ウィザードのターゲット・フォルダの選択ページで、newpackageフォルダを選択し、「終了」をクリックします。

    イメージをプロジェクトにインポート・ウィザードのターゲット・フォルダの選択ページ

  7. 「OK」をクリックしてアイコン・プロパティのダイアログ・ボックスを閉じます。

「OK」をクリックすると、IDEでは次の処理が行われます。

  • イメージをプロジェクトにコピー。これで、アプリケーションをビルドおよび配布するときには、イメージが配布可能JARファイルに含まれます。
  • イメージにアクセスするため、ImageDisplayクラスにコードを生成。
  • フォームの「デザイン」ビューで、イメージをラベルに表示。

    ラベルに追加されているイメージ

この段階で、次のような基本的な操作を実行し、フォームの外観を改良できます。

  • 「プロパティ」ウィンドウで、textプロパティを選択し、jLabel1を削除します。この値は、ラベルの表示テキストとして、GUIビルダーで生成されたものです。しかし、今はテキストではなくラベルを使用してイメージを表示しているため、テキストは必要ありません。
  • ボタンをドラッグしてフォームの中央に配置します。

    イメージが中央揃えされたImageDisplayクラスの「デザイン」ビュー

生成されたコードを表示するには:

  1. GUIデザイナで、「ソース」ボタンをクリックします。(「ソース」ボタンが表示されない場合は、メイン・メニューから「ビュー」>「ソース・エディタ」ツールバーを選択します。)
  2. 「Generated Code」という行まで下にスクロールします。
  3. 「Generated Code」行の左にあるプラス記号(+)をクリックし、GUIデザイナで生成されたコードを表示します。

主な行は次のとおりです。

jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/me/myimageapp/newpackage/image.png"))); // NOI18N

jLabel1Iconプロパティにプロパティ・エディタを使用したため、IDEではsetIconメソッドが生成されました。このメソッドのパラメータには、ImageIconの匿名の内部クラスにあるgetResource()メソッドへのコールが含まれます。生成されたイメージへのパスは、アプリケーションのパッケージ構造内での位置に対応します。

注意:

  • アイコン・プロパティ・エディタで「外部イメージ」オプションを使用すると、IDEではイメージをプロジェクトにコピーするかわりに、イメージへの絶対パスが生成されます。したがって、使用中のシステムでアプリケーションを実行するとイメージが表示されますが、別のシステムでアプリケーションを実行するとイメージは表示されない可能性があります。
  • getResourceメソッドは、アプリケーションで必要になる可能性のあるデータを含むテキスト・ファイルなど、他のタイプのリソースにアクセスする場合にも便利です。

Jlabelに対するマウス・イベントのイベント・ハンドラを登録するには:

「デザイン」ビューで「JLabel」を右クリックし、ポップアップ・メニューから「イベント」>「マウス」>「mouseClicked/mousePressed/mouseReleased」を選択します。
対応するイベントのイベント・ハンドラが生成されます。

注意: イベント・ハンドラでは、event.getPoint()event.getX()、またはevent.getY()メソッドを使用してマウス座標(たとえば、マウス・クリックの場所)を取得できます。詳細は、クラスMouseEventを参照してください。

フレームの背景としてのイメージの表示

SwingにはJFrameの背景イメージに対する直接のサポートがないため、GUIビルダーにもJFrameの背景イメージに対する直接のサポートはありません。
いずれにしても、このような目標を達成するための様々な間接的な方法があります。このアプリケーションでは、イメージを含むJLabelがJFrameコンポーネント内に組み込まれる一方で、そのJLabelの上に透明なJPanelが配置され、すべてのコンポーネントの親として使用されます。

イメージを含むJFrameに透明なJPanelを追加するには:

  1. 「ファイル」>「新規プロジェクト」を選択します。
  2. 新規プロジェクト・ウィザードで、「Java」>「Javaアプリケーション」を選択し、「次」をクリックします。
  3. 「プロジェクト名」に「BackgroundImageApp」と入力します。
  4. 「メイン・クラスの作成」チェックボックスを選択解除します。

    新規プロジェクトの作成

  5. 「終了」をクリックします。
  6. 「プロジェクト」ウィンドウで、「BackgroundImageApp」ノードを展開します。
  7. 「ソース・パッケージ」ノードを右クリックし、「新規」>「JFrameフォーム」を選択します。
  8. 「クラス名」に「ImageDisplay」と入力します。
  9. 「パッケージ名」に「org.me.mybackgroundapp」と入力します。

    新規フォームの追加

  10. 「終了」をクリックします。
  11. 「デザイン」ビューで「JFrame」を右クリックし、ポップアップ・メニューから「レイアウトを設定」>「グリッド・バッグ・レイアウト」を選択します。
  12. 「JFrame」を右クリックし、ポップアップ・メニューから「パレットから追加」>「Swingコンテナ」>「パネル」を選択します。
  13. 「プロパティ」ウィンドウで、jPanelの「opaque」プロパティを選択解除します。
  14. 「JFrame」を右クリックし、ポップアップ・メニューから「パレットから追加」>「Swingコントロール」>「ラベル」を選択します。
  15. 「プロジェクト」ウィンドウで、「org.me.mybackgroundapp」ノードを右クリックし、「新規」>「Javaパッケージ」を選択します。
  16. 「終了」をクリックします。新規パッケージが追加されます。

    イメージをプロジェクトにインポート・ウィザードのターゲット・フォルダの選択ページ

  17. GUIデザイナで、フォームに追加したラベルを選択します。
  18. 「プロパティ」ウィンドウで、「プロパティ」カテゴリをクリックし、アイコン・プロパティまでスクロールします。
  19. 省略符号(...)ボタンをクリックします。
  20. アイコン・プロパティのダイアログ・ボックスで、「プロジェクトにインポート」をクリックします。
  21. ファイル・チューザで、システム上にある、使用するイメージに移動します。「次」をクリックします。
  22. ウィザードのターゲット・フォルダの選択ページで、newpackageリソース・フォルダを選択し、「終了」をクリックします。
  23. 「OK」をクリックしてアイコン・プロパティのダイアログ・ボックスを閉じます。
  24. ナビゲータで、「jPanel」を右クリックし、ポップアップ・メニューから「プロパティ」を選択します。
  25. 「プロパティ」ダイアログ・ボックスで、「グリッドX」、「グリッドY」、「ウエイトX」、および「ウエイトY」プロパティを「1」に設定し、「フィル」プロパティを「両方」に設定します。

    パネルのプロパティ

  26. 「閉じる」をクリックします。
  27. jLabelについて手順24と25を繰り返します。
  28. 「プロパティ」ダイアログ・ボックスで、textプロパティを選択してjLabel1を削除します。

    ラベルのプロパティ

    背景が完了しました。たとえば、jLabelとjTextFieldをパレットからjPanelにドラッグできるようになりました。この両方が背景イメージの上に表示されます。

    Backgroundクラスの「デザイン」ビューを示すスクリーンショット。

注意: 説明した対処方法の利点は、背景イメージがデザイン時と実行時の両方で表示されることです。

アプリケーションのビルドと実行

これで、イメージにアクセスして表示するためのコードが生成されたので、アプリケーションをビルドおよび実行し、イメージにアクセスしていることを確認できます。

まず、プロジェクトのメイン・クラスを設定する必要があります。メイン・クラスを設定すると、プロジェクトの実行時にどのクラスを実行するかがIDEで認識されます。さらに、アプリケーションのビルド時に、アプリケーションのJARファイルのMain-Class要素が確実に生成されます。

プロジェクトのメイン・クラスを設定するには:

  1. ImageDisplayAppプロジェクトのノードを右クリックし、「プロパティ」を選択します。
  2. 「プロジェクト・プロパティ」ダイアログ・ボックスで、「実行」カテゴリを選択します。
  3. 「メイン・クラス」フィールドの横の「参照」ボタンをクリックします。次に、org.me.myimageapp.ImageDisplayクラスを選択します。

    メイン・クラスの選択

  4. 「メイン・クラスを選択」ボタンをクリックします。
  5. 「OK」をクリックして、「プロジェクト・プロパティ」ダイアログ・ボックスを閉じます。

プロジェクトをビルドするには:

  • メイン・ツールバーから「実行」>「プロジェクトを消去してビルド」(project_name)を選択します。

アプリケーションのビルド結果は、「ファイル」ウィンドウに表示できます。buildフォルダには、コンパイル済のクラスが格納されます。distフォルダには、コンパイル済のクラスとイメージを含む、実行可能なJARファイルが格納されます。

buildおよびdistフォルダが展開された「ファイル」ウィンドウ

プロジェクトを実行する

  • メイン・ツールバーから「実行」>「プロジェクトの実行」(project_name)を選択します。

カスタム・コードの作成

多くのアプリケーションでは、表示するイメージは、この例に示すように静的に決定されるわけではありません。たとえば、表示するイメージは、ユーザーがクリックする対象によって決まる場合があります。

表示するイメージをプログラムで選択できるようにする必要がある場合は、リソースにアクセスして表示するための、独自のカスタム・コードを作成できます。IDEでは、GUIビルダーで生成されたコードを含むソース・ビューの「保護されたブロック」にコードを直接記述することはできません。ただし、「プロパティ」ウィンドウからアクセスできるプロパティ・エディタから、保護されたブロックにコードを挿入できます。この方法でプロパティ・エディタを使用すると、GUIビルダーでデザインを変更してもカスタム・コードが失われません。

たとえば、JLabelのiconプロパティのカスタム・コードを作成するには:

  1. 「デザイン」ビューまたは「ナビゲータ」ウィンドウで「JLabel」を選択します。
  2. 「プロパティ」ウィンドウで、「icon」プロパティの横にある省略符号(...)ボタンをクリックします。
  3. ダイアログ・ボックスの上部にあるドロップダウン・リストから、「カスタム・コード」オプションを選択します。

「カスタム・コード」オプションが選択されたアイコン・プロパティ・エディタ

このプロパティ・エディタの「カスタム・コード」オプションを使用すると、setIconメソッドのパラメータを入力できます。このパラメータには、必要なロジックを入力したり、クラスの別の場所で手動でコーディングした別のメソッドへのコールを入力することもできます。

setIconパラメータを入力できるテキスト領域

要約

このチュートリアルでは、NetBeans IDEで作成するアプリケーションからイメージにアクセスする方法を説明しました。イメージの処理は、Javaのチュートリアルでさらに説明します。

注意: このチュートリアルの例は、Javaチュートリアルのアイコンの使用方法の項にある最初の例とよく似ています。異なるのは、このチュートリアルで生成されるコードでは、アイコンをラベルに適用するために、JLabelsetIconメソッドが使用される点です。Javaチュートリアルの例では、アイコンはコンストラクタに渡されることでラベルに適用されます。


関連項目

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