ページの先頭行へ戻る
Interstage Studio V12.0.0 ユーザーズガイド
FUJITSU Software

E.2.4 Lesson4 ダイアログ

ダイアログは、情報を入力する画面やメッセージを出力する画面などの補助的な画面として使用します。
カレンダーBeanには、各日付にメモを設定しツールチップで表示する機能があります。日付に対するメモを入力する画面をダイアログを使って実装します。
カレンダーの日付をダブルクリックするとダイアログを表示し、メモの入力ができるようにします。Lesson3で作成したプロジェクトに対しダイアログの追加を行います。

ダイアログの作成

  1. Lesson3で作成したプロジェクト「MyCalendar」をワークベンチで開きます。
    メニューバーから[ファイル] > [新規] > [その他]を選択します。

  2. [新規]ウィザードが表示されます。ツリーから[Java] > [GUI] > [フォーム]を選択し、[次へ]をクリックします。

  3. [Javaフォーム情報]ページが表示されます。
    以下の情報を入力し、[次へ]をクリックします。

    設定項目

    設定内容

    パッケージ

    myapp.javaform

  4. [Javaフォームの新規作成]ダイアログボックスが表示されます。
    [ダイアログ]を選択し、[OK]をクリックします。

    ポイント

    Javaフォームの種類について

    Javaフォームには以下の種類があり、それぞれの種別ごとにクラス継承フォームが用意されています。

    • フレーム
      プルダウンメニューやタイトルバーなどで構成される一般的なウィンドウのフレーム(枠)を持つフォームです。アプリケーションの初期画面など基本となる画面として利用します。

    • ダイアログ
      見かけは、フレームと似ていますが、モーダルにできる、タイトルバーのアイコンを指定できないなど、フレームとの機能差があります。フレームに対して補助的な位置づけで、一時的に表示してユーザの入出力を行うような画面として利用します。

    • パネル
      フレームをもたないフォームです。ほかのフレームやダイアログに貼り付けて利用します。複数のBeanをパネルに貼り付けて、複合的なGUI部品を作成する場合に利用します。

  5. ダイアログを新規作成します。
    [ダイアログ]ページが表示されます。以下の情報を入力します。

    設定項目

    設定内容

    パッケージ名

    myapp.javaform

    Javaフォーム名

    MemoDialog

    基底クラス

    javax.swing.JDialog

    矩形を設定します。
    矩形の[...]をクリックします。[矩形プロパティの設定]ダイアログボックスが表示されます。
    プロパティを以下のように指定し、[OK]をクリックします。

    プロパティ名

    300

    高さ

    120

    [作成]をクリックします。

  6. Javaフォーム定義が起動されます。

Beanの配置

  1. 作成したMemoDialogの[レイアウトマネージャ]プロパティを[BorderLayout]に変更します。

    [レイアウトマネージャ]を変更すると、[BorderLayoutManagerの設定]ダイアログボックスが表示されるので[OK]をクリックします。

  2. オブジェクトパレットの[Swingコンテナ]が選択されていない場合は、[Swingコンテナ]をクリックします。

  3. オブジェクトパレットの[パネル]をクリックし選択します。

  4. マウスを使ってJavaフォーム上でドラッグして配置します。

  5. [追加情報の設定]では[CENTER]を選択して[OK]をクリックします。

  6. 作成したパネルのレイアウトを変更します。
    パネルの[レイアウトマネージャ]プロパティを[GridBagLayout]に変更します。

    [GridBagConstraintsデフォルト値設定]ダイアログボックスでは、そのまま[OK]をクリックします。

  7. 2つ目のパネルを配置します。
    ダイアログの直下に配置するため、先ほど配置したパネルの上でドラッグを行わず、ダイアログの外のグレーの領域でドラッグしてください。
    [追加情報の設定]では[SOUTH]を選択して[OK]をクリックします。

  8. ラベルを配置します。
    オブジェクトパレットの[Swing]が選択されていない場合は、[Swing]をクリックします。

  9. オブジェクトパレットの[ラベル]をクリックし選択します。

  10. 1つ目に作成したパネルの上に配置するよう、作成したダイアログの上側でドラッグします。
    [追加情報の設定]では、そのまま[OK]をクリックします。

  11. 作成したラベルのテキストを変更します。
    作成したラベルを選択し、プロパティウィンドウの[固有]タブを選択します。
    [テキスト]プロパティを[メモ:]に変更します。

  12. テキストフィールドを配置します。
    オブジェクトパレットの[テキストフィールド]をクリックし選択します。

  13. 1つ目に作成したパネルの上に配置するよう、作成したダイアログの上側でドラッグします。
    [追加情報の設定]では、[gridwidth]を[2]し変更し[OK]をクリックします。

  14. 作成したテキストフィールドの[Bean名]を変更します。
    作成したテキストフィールドを選択し、プロパティウィンドウの[標準]タブを選択します。
    [Bean名]プロパティを[メモ]に変更します。

  15. 作成したテキストフィールドのテキストを変更します。
    作成したテキストフィールドを選択し、プロパティウィンドウの[固有]タブを選択します。
    [テキスト]プロパティを[メモ]に変更します。

  16. ボタンを配置します。
    オブジェクトパレットの[ボタン]をクリックし選択します。

  17. 2つ目に作成したパネルの上に配置するよう、プロパティウィンドウのツリーに存在する[jPanel2]を選択します。

  18. 選択すると対象パネルの部分に枠が表示されます。

  19. 枠の中でドラッグします。

  20. 作成したボタンの[Bean名]を変更します。
    作成したボタンを選択し、プロパティウィンドウの[標準]タブを選択します。
    [Bean名]プロパティを[jButtonOk]に変更します。

  21. 作成したボタンの[テキスト]を変更します。
    作成したボタンを選択し、プロパティウィンドウの[固有]タブを選択します。
    [テキスト]プロパティを[OK]に変更します。

  22. 2つ目のボタンを配置します。
    オブジェクトパレットの[ボタン]をクリックし選択します。

  23. 先ほどと同様に2つ目に作成したパネルの上に配置するよう、プロパティウィンドウのツリーに存在する[jPanel2]を選択します。
    選択すると対象パネルの部分に枠が表示されます。
    枠の中でドラッグします。

  24. 作成したボタンの[Bean名]を変更します。
    作成したボタンを選択し、プロパティウィンドウの[標準]タブを選択します。
    [Bean名]プロパティを[jButtonCancel]に変更します。

  25. 作成したボタンの[テキスト]を変更します。
    作成したボタンを選択し、プロパティウィンドウの[固有]タブを選択します。
    [テキスト]プロパティを[キャンセル]に変更します。

  26. Javaフォーム定義のメニューバーから[表示] > [Javaエディタ]を選択し、Javaエディタをアクティブにします。

  27. JBKのクラスを使用するので、importキーワードを追加します。
    の部分を追加します。

    import com.fujitsu.jbk.gui.JFCalendarView;
  28. MemoDialogクラスにフィールドを追加します。
    このフィールドは呼び出し元フレームのカレンダークラスを保存するために使用します。の部分を追加します。

    //@@Form Design Information end
    
    JFCalendarView cv;
    /**
     * フォームを構築します。
     */
    public MemoDialog(java.awt.Frame param0, boolean param1) {
        super(param0, param1);
    }
  29. MemoDialogクラスのコンストラクタに処理を追加します。
    コンストラクタとは、オブジェクトを生成したときに自動的に呼び出されるメソッドで、通常はオブジェクトの初期化処理を行います。クラス名と同名のメソッドがコンストラクタとして扱われます。の部分を追加します。

    public MemoDialog(java.awt.Frame param0, boolean param1) {
           // 基底クラスのコンストラクタを実行します。
           super(param0, param1);
           cv = ((Frame1) param0).jFCalendarView1;
           // フォームを初期化します。
           init$();
           // ユーザ定義初期化処理を実行します。
           initUser$();
    }

    ポイント

    Javaエディタのスクロールについて

    Javaエディタの表示を編集したいメソッドやフィールドまでスクロールしたい場合、[アウトライン]ビューを利用すると便利です。
    [アウトライン]ビューにある[MemoDialog(Frame, boolean)]をクリックすると、Javaエディタの表示がコンストラクタまでスクロールします。

  30. MemoDialogクラスのinitUser$メソッドに処理を追加し、カレンダーに設定されているメモを初期表示するようにします。
    initUser$()の処理手続きにの部分を追加します。

        private void initUser$() {
            // この位置にユーザ定義初期化処理を記述します.
            メモ.setText(cv.getMemo(cv.getDate()));
            メモ.setColumns(10);
        }
  31. [OK]をクリックしたときの処理を記述します。
    [Beanリスト]ビューにある[MemoDialog] > [jPanel2] > [jButtonOk] > [イベント] > [action_actionPerformed]をダブルクリックします。
    イベント処理の作成確認画面が表示された場合は、[はい]をクリックします。

    「jButtonOk_action_actionPerformed$」の処理手続きが表示されるので、の部分を記述します。

        private void jButtonOk_action_actionPerformed$(java.awt.event.ActionEvent e) {
            if(!defaultEventProc$(e)) {
                // ここにイベント発生時の処理を記述します.
                cv.setMemo(cv.getDate(), メモ.getText());
                dispose();
            }
        }

    次に、[キャンセル]をクリックしたときの処理を記述します。
    [Beanリスト]ビューにある[MemoDialog] > [jPanel2] > [jButtonCancel] > [イベント] > [action_actionPerformed]をダブルクリックします。
    イベント処理の作成確認画面が表示された場合は、[はい]をクリックします。
    「jButtonCancel_action_actionPerformed$」の処理手続きが表示されるので、の部分を記述します。

        private void jButtonCancel_action_actionPerformed$(java.awt.event.ActionEvent e) {
            if(!defaultEventProc$(e)) {
                // ここにイベント発生時の処理を記述します.
                dispose();
            }
        }
  32. Javaフォームを保存します。
    ワークベンチのメニューバーから[ファイル] > [保管]を選択します。
    Javaフォーム定義のメニューバーから [ファイル] > [終了]を選択し、Javaフォームを終了します。

カレンダーへの処理追加

  1. カレンダーの日付をダブルクリックしたときにダイアログを表示し、メモの入力ができるようにします。
    [Frame1.java]をJavaフォーム定義で開きます。ワークベンチの[パッケージ・エクスプローラー]ビューにある[MyCalendar] > [src] > [myapp.javaform] > [Frame1.java]を右クリックしてコンテキストメニューを表示します。そして[次で開く] > [グラフィカルエディタ]を選択します。

  2. Javaフォーム定義のメニューバーから[表示] > [Javaエディタ]を選択し、Javaエディタをアクティブにします。

  3. カレンダーの日付をダブルクリックした場合は actionイベントが発生します。actionイベントに処理を記述します。
    [Beanリスト]ビューにある[Frame1] > [jFCalendarView1] > [イベント] > [action_actionPerformed]をダブルクリックします。 イベント処理の作成確認画面が表示された場合は、[はい]をクリックします。
    「jFCalendarView1_action_actionPerformed$」の処理手続きが表示されるので、の部分を記述します。

        private void jFCalendarView1_action_actionPerformed$(java.awt.event.ActionEvent e) {
            if( !defaultEventProc$(e) ) {
                // ここにイベント発生時の処理を記述します。
                MemoDialog dlg = new MemoDialog(this, false);
                dlg.setVisible(true);
            }
        }
  4. カレンダーBeanのプロパティを変更します。
    プロパティシートを使って[固有]タブにある以下のプロパティを変更します。

    プロパティ名

    メモ表示

    True

    メモマーカーの表示

    True

  5. Javaフォームを保存します。
    Javaフォーム定義のメニューバーから[ファイル] > [上書き保存]を選択します。
    Javaフォーム定義のメニューバーから[ファイル] > [終了]を選択し、Javaフォームを終了します。

ビルド

  1. ビルドは、[プロジェクト]メニューの[自動的にビルド]が有効になっている場合は、Javaファイルなどのリソースファイルを保存すると自動的に実行されます。
    [自動的にビルド]が無効になっている場合は、プロジェクトを選択し右クリックメニューの[プロジェクトのビルド]を選択するか、[プロジェクト]メニューの[プロジェクトのビルド]を選択します。

  2. JARファイルについては別途必要なため、これを作成します。
    JARファイルの作成は、エクスポートウィザードから行います。
    エクスポートウィザードを起動するには、[ファイル] > [エクスポート]を選択します。
    エクスポートウィザードから[Java] > [JARファイル]を選択し、[次へ]をクリックします。

  3. JARエクスポートウィザードが表示されます。
    [エクスポートするリソースの選択]で[MyCalendar] > [src]フォルダを選択し、以下の設定項目を入力します。
    情報を設定後、[完了]をクリックします。

    設定項目

    設定内容

    エクスポートするリソースの選択

    src/

    生成されたクラスファイルとリソースをエクスポート

    チェックする

    JARファイル

    MyCalendar/MyCalendar.jar

    JARファイルの内容を圧縮

    チェックする

    JARエクスポートでは以下のメッセージが出力されますが、問題ありません。

実行

  1. 実行するファイル(クラス)を選択します。ワークベンチの[パッケージ・エクスプローラー]ビューにある[MyCalendar] > [src] > [myapp.javaform] > [MyCalendar.java]をクリックします。

  2. メニューバーから[実行] > [実行] > [Javaアプリケーション]を選択します。アプリケーションが起動し、Javaフォームが表示されます。

  3. カレンダー上の日付をダブルクリックすると、ダイアログが表示されます。
    メモを入力し、[OK]をクリックします。

  4. メモを入力した日付にマーカーが表示されます。
    また、メモが設定された日付の上にカーソルを重ねると、ツールチップにメモが表示されます。

  5. タイトルバーのクローズボタン([×]ボタン)をクリックして、アプリケーションを終了します。