ダイアログは、情報を入力する画面やメッセージを出力する画面などの補助的な画面として使用します。
カレンダーBeanには、各日付にメモを設定しツールチップで表示する機能があります。日付に対するメモを入力する画面をダイアログを使って実装します。
カレンダーの日付をダブルクリックするとダイアログを表示し、メモの入力ができるようにします。Lesson3で作成したプロジェクトに対しダイアログの追加を行います。
ダイアログの作成
Lesson3で作成したプロジェクト「MyCalendar」をワークベンチで開きます。
メニューバーから[ファイル] > [新規] > [その他]を選択します。
[新規]ウィザードが表示されます。ツリーから[Java] > [GUI] > [フォーム]を選択します。

[次へ]をクリックします。
[Javaフォーム情報]ページが表示されます。このページでは、以下の情報を入力します。
設定項目 | 設定内容 |
|---|---|
パッケージ | myapp.javaform |

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

ポイント
Javaフォームの種類について
Javaフォームには以下の種類があり、それぞれの種別ごとにクラス継承フォームが用意されています。なお、よく使われるフォームのレイアウトはあらかじめ登録されています。利用する場合は、画面の[ウィザード]タブをクリックして、自動生成するフォームの種別を選択します。
フレーム
プルダウンメニューやタイトルバーなどで構成される一般的なウィンドウのフレーム(枠)を持つフォームです。アプリケーションの初期画面など基本となる画面として利用します。
ダイアログ
見かけは、フレームと似ていますが、モーダルにできる、タイトルバーのアイコンを指定できないなど、フレームとの機能差があります。フレームに対して補助的な位置づけで、一時的に表示してユーザの入出力を行うような画面として利用します。
パネル
フレームをもたないフォームです。ほかのフレームやダイアログに貼り付けて利用します。複数のBeanをパネルに貼り付けて、複合的なGUI部品を作成する場合に利用します。
ダイアログを新規作成します。
[ダイアログ]ページが表示されます。以下の情報を入力します。
設定項目 | 設定内容 |
|---|---|
パッケージ名 | myapp.javaform |
Javaフォーム名 | MemoDialog |
基底クラス | javax.swing.JDialog |

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

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

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

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

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

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

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

マウスを使ってJavaフォーム上でドラッグして配置します。
[追加情報の設定]では[CENTER]を選択して[OK]をクリックします。

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

2つ目のボタンを配置します。
オブジェクトパレットの[ボタン]をクリックし選択します。
先ほどと同様に2つ目に作成したパネルの上に配置するよう、プロパティウィンドウのツリーに存在する[jPanel2]を選択します。
選択すると対象パネルの部分に枠が表示されます。
枠の中でドラッグします。
作成したボタンの[Bean名]を変更します。
作成したボタンを選択し、プロパティウィンドウの[標準]タブを選択します。
[Bean名]プロパティを[jButtonCancel]に変更します。
作成したボタンの[テキスト]を変更します。
作成したボタンを選択し、プロパティウィンドウの[固有]タブを選択します。
[テキスト]プロパティを[キャンセル]に変更します。

Javaフォーム定義のメニューバーから[表示] > [Javaエディタ]を選択し、Javaエディタをアクティブにします。
JBKのクラスを使用するので、importキーワードを追加します。
太字の部分を追加します。
import com.fujitsu.jbk.gui.JFCalendarView;
MemoDialogクラスにフィールドを追加します。
このフィールドは呼び出し元フレームのカレンダークラスを保存するために使用します。太字の部分を追加します。
//@@Form Design Information end JFCalendarView cv; /** * フォームを構築します。 */ public MemoDialog(java.awt.Frame param0, boolean param1) { super(param0, param1); }
MemoDialogクラスのコンストラクタに処理を追加します。
コンストラクタとは、オブジェクトを生成したときに自動的に呼び出されるメソッドで、通常はオブジェクトの初期化処理を行います。クラス名と同名のメソッドがコンストラクタとして扱われます。太字の部分を追加します。
public MemoDialog(java.awt.Frame param0, boolean param1) {
super(param0, param1);
cv = ((Frame1) param0).jFCalendarView1;
}ポイント
Javaエディタのスクロールについて
Javaエディタの表示を編集したいメソッドやフィールドまでスクロールしたい場合、[アウトライン]ビューを利用すると便利です。
[アウトライン]ビューにある[MemoDialog(Frame, boolean)]をクリックすると、Javaエディタの表示がコンストラクタまでスクロールします。

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

「jButtonOk_action_actionPerformed」の処理手続きが表示されるので、太字の部分を記述します。
public 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」の処理手続きが表示されるので、太字の部分を記述します。
public void jButtonCancel_action_actionPerformed(java.awt.event.ActionEvent e) {
if(!defaultEventProc(e)) {
// ここにイベント発生時の処理を記述します.
dispose();
}
}Javaフォームを保存します。
ワークベンチのメニューバーから[ファイル] > [保存]を選択します。
Javaフォーム定義のメニューバーから [ファイル] > [終了]を選択し、Javaフォームを終了します。
カレンダーへの処理追加
カレンダーの日付をダブルクリックしたときにダイアログを表示し、メモの入力ができるようにします。
[Frame1.java]をJavaフォーム定義で開きます。ワークベンチの[パッケージエクスプローラ]ビューにある[MyCalendar] > [src] > [myapp.javaform] > [Frame1.java]を右クリックしてコンテキストメニューを表示します。そして[アプリケーションから開く] > [グラフィカルエディタ]を選択します。
Javaフォーム定義のメニューバーから[表示] > [Javaエディタ]を選択し、Javaエディタをアクティブにします。
カレンダーの日付をダブルクリックした場合は actionイベントが発生します。actionイベントに処理を記述します。
[Beanリスト]ビューにある[Frame1] > [jFCalendarView1] > [イベント] > [action_actionPerformed]をダブルクリックします。 イベント処理の作成確認画面が表示された場合は、[はい]をクリックします。
「jFCalendarView1_action_actionPerformed」の処理手続きが表示されるので、太字の部分を記述します。
public void jFCalendarView1_action_actionPerformed( java.awt.event.ActionEvent e) {
if( !defaultEventProc(e) ) {
// ここにイベント発生時の処理を記述します.
MemoDialog dlg = new MemoDialog(this, false);
dlg.init();
dlg.setVisible(true);
}
}カレンダーBeanのプロパティを変更します。
プロパティシートを使って[固有]タブにある以下のプロパティを変更します。
プロパティ名 | 値 |
|---|---|
メモ表示 | True |
メモマーカーの表示 | True |

Javaフォームを保存します。
Javaフォーム定義のメニューバーから[ファイル] > [上書き保存]を選択します。
Javaフォーム定義のメニューバーから [ファイル] > [終了]を選択し、Javaフォームを終了します。
ビルド
ビルドは、[プロジェクト]メニューの[自動的にビルド]が有効になっている場合は、Javaファイルなどのリソースファイルを保存すると自動的に実行されます。
[自動的にビルド]が無効になっている場合は、プロジェクトを選択し右クリックメニューの[プロジェクトのビルド]を選択するか、[プロジェクト]メニューの[プロジェクトのビルド]を選択します。
ビルドが正常に行われると「MyCalendar.jar」ファイルが作成されます。
実行
実行するファイル(クラス)を選択します。ワークベンチの[パッケージエクスプローラ]ビューにある[MyCalendar] > [src] > [myapp.javaform] > [MyCalendar.java]をクリックします。
メニューバーから[実行] > [実行] > [Javaアプリケーション]を選択します。アプリケーションが起動し、Javaフォームが表示されます。
カレンダー上の日付をダブルクリックすると、ダイアログが表示されます。
メモを入力し、[OK]をクリックします。

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

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