Interstage Studioでは、JavaアプリケーションのひとつであるJavaBeansを開発することができます。
JavaBeansとは、Javaのクラスを部品化する規約であり、その部品の一般名称でもあります。部品化した個々の部品をBeanと呼びます。
ここでは、JBKの整数フィールドとスピンボタンを組み合わせた、新しいBeanを開発します。
JavaBeansのプロジェクトの作成
ワークベンチを起動します。
メニューバーから[ファイル] > [新規] > [プロジェクト]を選択します。
[新規プロジェクト]ウィザードが表示されます。ツリーから[Javaアプリケーションプロジェクト]を選択します。
[次へ]をクリックします。
[Javaアプリケーションプロジェクト]ページが表示されます。
以下のようにプロジェクトの情報を入力します。
設定項目 | 設定内容 |
---|---|
プロジェクト | SpinBoxBean |
[完了]をクリックします。
ポイント
Beanの分類について
Interstage StudioではBeanを以下の2つに分類し、それぞれの定義機能を提供しています。
単体Bean
テキストフィールドやボタンのような単機能のBeanです。テキストフィールド(JTextField)など既存の単体Beanを継承し、付加機能を付け、新しい単体Beanとして作成します。
基底クラスにビューをもたないクラスを指定した場合は、不可視Beanとなります。java.lang.Objectなどを継承します。不可視Beanはビューをもたないため、一般のソースと同様にエディタ上で編集します。
複合Bean
複数のBeanで構成するBeanです。 Javaフォーム定義で、フォームのレイアウトを作成する要領でパネル(JPanelまたはPanel)に対して、Beanを貼り付け作成します。コンテナタイプにより、軽量コンポーネントの場合はJPanel、重量コンポーネントの場合はPanelを使います。
Javaフォームの作成
引き続き複合Beanを作成します。ワークベンチのメニューバーから、[ファイル] > [新規] > [その他]を選択します。表示される[新規]ウィザードのツリーから、[Java] > [GUI] > [フォーム]を選択します。
単体Beanや不可視Beanを作成する場合は[JavaBeans]を選択しますが、今回は複合Beanを作成するので[フォーム]を選択します。
[次へ]をクリックします。
[Javaフォーム情報]ページが表示されます。
このページでは、以下の情報を入力します。
設定項目 | 設定内容 |
---|---|
パッケージ | myapp.javabeans |
[次へ]をクリックします。
[Javaフォームの新規作成]ウィザードが表示されます。
作成するフォームのタイプを選択します。[Java]タブにある[パネル]を選択し、[OK]をクリックします。
パネル形式のフォームを新規作成します。
以下の情報を入力します。
設定項目 | 設定内容 |
---|---|
Javaフォーム名 | SpinBoxBean |
基底クラス | javax.swing.JPanel |
[作成]をクリックします。
Javaフォーム定義が起動されます。Javaフォーム定義を使用して、Beanの配置、プロパティ(属性)の設定、処理手続きの記述をし、フォームを完成させます。
フレームのプロパティを変更します。
レイアウトマネージャプロパティに「BorderLayout」を設定します。
水平間隔、垂直間隔はともに0を指定し、[OK]をクリックします。
整数フィールドBeanを配置します。
オブジェクトパレットの[JBK]が選択されていない場合は、[JBK]をクリックします。
オブジェクトパレットの[整数フィールド]をクリックして選択します。 マウスを使ってJavaフォーム上でドラッグして配置します。
「BorderLayout」は、上下左右にBeanを配置します。上下左右および中央は、「NORTH」、「SOUTH」、「WEST」、「EAST」、「CENTER」と呼ばれます。
[CENTER]を選択し、[OK]をクリックします。
スピンボタンBeanを配置します。
オブジェクトパレットの[スピンボタン]をクリックして選択します。 マウスを使ってJavaフォーム上でドラッグして配置します。
[EAST]を選択し、[OK]をクリックします。
2つのBeanは以下のように貼り付けられます。
BeanInfoの定義
BeanInfoは、Beanをコンポーネントとして利用するプログラムに対する外部インタフェース情報です。BeanInfo定義を使用して、プロパティ、メソッド、イベントなどの情報を定義します。
BeanInfo定義は、ワークベンチから起動します。Javaフォーム定義のメニューバーから[表示] > [Javaエディタ]を選択し、ワークベンチをアクティブにします。
ワークベンチのメニューバーから[編集] > [BeanInfoの定義] > [BeanInfo定義]を選択して、BeanInfo定義を呼び出します。
「SpinBoxBean」が選択されている状態で、[有効]をクリックします。
ポイント
アイコンについて
BeanInfo定義では、作成するBeanのアイコンを指定することができます。
アイコンのイメージファイルは、GIF形式またはJPEG形式で任意のペイントツールであらかじめ作成し、次の方法でプロジェクトに追加してください。ワークベンチのメニューバーから[ファイル] > [インポート]をクリックします。[インポート]ダイアログボックスにある[ファイルシステム]を利用して、イメージファイルをプロジェクトにインポートします。
Interstage Studioでは、Beanのアイコンをオブジェクトパレットやプロパティウィンドウ内のコンポーネントツリーに表示する際に、「16×16ドット カラー」に指定されたイメージファイルを使用します。
アイコンのイメージファイルの指定は、省略することができます。省略した場合は、Interstage Studioが用意しているデフォルトのアイコンとなります。
次にプロパティを定義します。
以下の2つのプロパティを公開することにします。
プロパティ名 | 型 | 意味 |
---|---|---|
increment | long | スピンボタンの増分値 |
value | long | 整数フィールドの値 |
BeanInfo定義画面で、[プロパティ追加]をクリックします。
ダイアログボックスのように指定したら、[OK]をクリックします。
同様に、valueプロパティを追加します。
BeanInfo定義画面で、[プロパティ追加]をクリックします。
ダイアログボックスのように指定したら、[OK]をクリックします。
以下のようにプロパティが追加されます。
[OK]をクリックして、BeanInfo定義画面を閉じます。
イベント処理の記述
エディタエリアにある[SpinBoxBean.java]タブをクリックして、Javaエディタをアクティブにします。
JBKのクラスを使用するので、importキーワードを追加します。
太字の部分を追加します。
import com.fujitsu.jbk.gui.JFSpinButton;
増分値を保持するフィールドをクラスに追加します。
SpinBoxBeanクラスにあるコンストラクタの上に、incrementフィールドを追加します。太字の部分を追加します。
//@@Form Design Information end
long increment = 1;
/**
* フォームを構築します。
*/
public SpinBoxBean() {
}
ポイント
Javaフォーム定義が管理する変更禁止ソースについて
Javaフォームは、画面(Bean)の情報やイベント処理を呼び出すソースを含んでいます。このソースは、Javaフォーム定義が管理しているため変更禁止です。
太字のコメントで囲われた部分が、Javaフォーム定義が管理する変更禁止ソースになります。
public class SpinBoxBean extends javax.swing.JPanel { //@@Form Design Information start ~Javaフォーム定義が管理する変更禁止ソース~ //@@Form Design Information end
getIncrementメソッドの処理を記述します。
incrementプロパティの取得メソッドであるgetIncrementに処理を追加します。太字の部分を追加します。
public long getIncrement() {
// ここにプロパティ値返却処理を記述してください
long value = 0;
value = increment;
return value;
}
ポイント
Javaエディタのスクロールについて
Javaエディタの表示を編集したいメソッドやフィールドまでスクロールしたい場合、[アウトライン]ビューを利用すると便利です。
[アウトライン]ビューにある「getIncrement()」をクリックすると、Javaエディタの表示がgetIncrementメソッドまでスクロールします。
setIncrementメソッドの処理を記述します。
incrementプロパティの設定メソッドであるsetIncrementに処理を追加します。太字の部分を追加します。
public void setIncrement(long newValue) {
try {
java.lang.Long oldVal = new java.lang.Long(getIncrement());
java.lang.Long newVal = new java.lang.Long(newValue);
if( __cdIsincrementPropertyConstrained ) {
// プロパティ値変更の許可を求めます
__cdVetoableChangeSupport.fireVetoableChange("increment",oldVal,newVal);
}
// ここにプロパティ値設定処理を記述してください
increment = newValue;
if( __cdIsincrementPropertyBounded ) {
// プロパティ値変更を通知します
__cdPropertyChangeSupport.firePropertyChange("increment",oldVal,newVal);
}
}
catch(java.beans.PropertyVetoException e) {
}
}
getValueメソッドの処理を記述します。
valueプロパティの取得メソッドであるgetValueに処理を追加します。太字の部分を追加します。
public long getValue() {
// ここにプロパティ値返却処理を記述してください
long value = 0;
value = jFFieldLong1.getValue();
return value;
}
setValueメソッドの処理を記述します。
valueプロパティの設定メソッドであるsetValueに処理を追加します。太字の部分を追加します。
public void setValue(long newValue) {
try {
java.lang.Long oldVal = new java.lang.Long(getValue());
java.lang.Long newVal = new java.lang.Long(newValue);
if( __cdIsvaluePropertyConstrained ) {
// プロパティ値変更の許可を求めます
__cdVetoableChangeSupport.fireVetoableChange("value",oldVal,newVal);
}
// ここにプロパティ値設定処理を記述してください
jFFieldLong1.setValue(newValue);
if( __cdIsvaluePropertyBounded ) {
// プロパティ値変更を通知します
__cdPropertyChangeSupport.firePropertyChange("value",oldVal,newVal);
}
}
catch(java.beans.PropertyVetoException e) {
}
}
イベントが発生したときの処理を記述するため、[Beanリスト]ビューを表示します。
メニューバーから[ウィンドウ] > [ビューの表示] > [その他]を選択します。[ビューの表示]ダイアログボックスが表示されます。[Java] > [Beanリスト]を選択し、[OK]をクリックします。
スピンボタンをクリックしたときの処理を記述します。
[Beanリスト]ビューにある[SpinBoxBean] > [jFSpinButton1] > [イベント] > [action_actionPerformed]をダブルクリックします。
イベント処理の作成確認ダイアログが表示されるので、[はい]をクリックします。
「jFSpinButton1_action_actionPerformed」の処理手続きが表示されるので、太字の部分を追加します。
public void jFSpinButton1_action_actionPerformed(java.awt.event.ActionEvent e) { if (!defaultEventProc(e)) { // ここにイベント発生時の処理を記述します. if (e.getActionCommand() == JFSpinButton.UP){ // 上のボタンが押された jFFieldLong1.setValue(jFFieldLong1.getValue() + increment); } if (e.getActionCommand() == JFSpinButton.DOWN){ // 下のボタンが押された jFFieldLong1.setValue(jFFieldLong1.getValue() - increment); } } }
Javaフォームを保存します。
ワークベンチのメニューバーから[ファイル] > [保存]を選択します。Javaフォーム定義のメニューから [ファイル] > [終了]を選択し、Javaフォームを終了します。
ビルド
ビルドは、[プロジェクト]メニューの[自動的にビルド]が有効になっている場合は、Javaファイルなどのリソースファイルを保存すると自動的に実行されます。
[自動的にビルド]が無効になっている場合は、プロジェクトを選択し右クリックメニューの[プロジェクトのビルド]を選択するか、[プロジェクト]メニューの[プロジェクトのビルド]を選択します。
JARファイルについては別途必要なため、これを作成します。
JARファイルの作成は、エクスポートウィザードから行います。
エクスポートウィザードを起動するには、[ファイル] > [エクスポート]を選択します。
エクスポートウィザードから[Java] > [JARファイル]を選択します。
JARエクスポートウィザードが表示されます。
[エクスポートするリソースの選択]で[LoginApplet] > [src] > [myapp.applet]を選択し、以下の設定項目を入力します。
情報を設定後、[完了]をクリックします。
設定項目 | 設定内容 |
---|---|
エクスポートするリソースの選択 | SpinBoxBean.java |
生成されたクラスファイルとリソースをエクスポート | チェックする |
JARファイル | SpinBoxBean/SpinBoxBean.jar |
JARファイルの内容を圧縮 | チェックする |
JARエクスポートでは以下のメッセージが出力されますが、問題ありません。
Javaアプリケーションプロジェクトの作成(動作確認を行うプログラムの作成)
作成したSpinBoxBeanの動作確認を行うために、別のプロジェクトを作成します。
メニューバーから[ファイル] > [新規] > [プロジェクト]を選択します。
[新規プロジェクト]ウィザードが表示されます。ツリーから[Javaアプリケーションプロジェクト]を選択します。
[次へ]をクリックします。
[Javaアプリケーションプロジェクト]ページが表示されます。以下のようにプロジェクトの情報を入力します。
設定項目 | 設定内容 |
---|---|
プロジェクト名 | SpinBoxTest |
[完了]をクリックします。
生成されたプロジェクトを選択し、右クリックして表示されるコンテキストメニューから[プロパティ]を選択します。[プロパティ]ダイアログボックスが表示されますので、左側のペインのツリーから[Javaのビルドパス]を選択します。[Javaのビルドパス]ページが表示されます。
このプロジェクトでは先程作成したBeanを利用するため、「SpinBoxBean」プロジェクトにある「SpinBoxBean.jar」ファイルをビルドパスに追加します。
[ライブラリ]タブをクリックします。
[JARの追加]をクリックすると、[JARの選択]ダイアログボックスが表示されます。[ビルドパスに追加するJARアーカイブを選択してください]にある[SpinBoxBean] > [SpinBoxBean.jar]をクリックします。
[OK]をクリックします。
[SpinBoxBean.jar]が追加されます。
[OK]をクリックします。
次に、フレームを作成します。
ワークベンチのメニューバーから、[ファイル] > [新規] > [その他]を選択します。
[新規]ウィザードが表示されます。ツリーから[Java] > [GUI] > [フォーム]を選択します。
[次へ]をクリックします。
[Javaフォーム情報]ページが表示されます。
このページでは、以下の情報を入力します。
設定項目 | 設定内容 |
---|---|
ソースフォルダ | SpinBoxTest/src |
パッケージ | mayapp.javabeans |
[次へ]をクリックします。
[Javaフォームの新規作成]ダイアログが表示されます。
[フレーム]を選択し、[OK]をクリックします。
[フレーム]ダイアログが表示されます。
このページでは、作成するフレームの情報を指定します。
以下の情報を入力します。
設定項目 | 設定内容 |
---|---|
パッケージ名 | myapp.javabeans |
Javaフォーム名 | Frame1 |
基底クラス | Javax.swing.JFrame |
[作成]をクリックします。
フォームのクラスとフォームを表示する実行可能なクラスを作成します。
メニューバーから[ファイル] > [新規] > [クラス]を選択します。
[Javaクラス]ページが表示されます。
このページでは、作成するJavaクラスの基本情報を指定します。
以下の情報を入力します。
設定項目 | 設定内容 |
---|---|
ソースフォルダ | SpinBoxTest/src |
パッケージ | myapp.javabeans |
名前 | SpinBoxTest |
継承された抽象メソッド | チェックする |
[完了]をクリックします。
[Javaエディタ]に作成されたソースが表示されます。
作成されたソースを修正します。太字の部分を追加します。
package myapp.javabeans; public class SpinBoxTest { //コンストラクタ
public SpinBoxTest() {
}
public void run(String[] args) {
//新規フォームプロジェクトの作成。
Frame1 form = new Frame1();
//フォームの表示。
form.setVisible(true);
}
//メイン処理
public static void main(String[] args) {
// SpinBoxTestクラスのインスタンスを作成
SpinBoxTest object = new SpinBoxTest();
// SpinBoxTestクラスのインスタンスのrunメソッドを呼び出す。
object.run(args);
}
}
Beanの登録
[Frame1.java]をJavaフォーム定義で開きます。
ワークベンチの[パッケージエクスプローラ]ビューにある[SpinBoxTest] > [src] > [myapp.javabeans] > [Frame1.java]を右クリックしてコンテキストメニューを表示します。そして[アプリケーションから開く] > [グラフィカルエディタ]を選択します。
先程作成したBeanを、Javaフォーム定義に登録します。登録することにより新規開発したBeanを、JBKのBeanなどと同様にJavaフォームに貼り付けて使用できるようになります。
Javaフォーム定義のメニューバーから[環境設定] > [Beanの登録]を選択します。
[Beanの登録]ダイアログボックスが表示されます。
[新規追加]をクリックします。「MyBean」と入力します。
次に、[Beanの追加]をクリックします。[Beanの追加]ダイアログボックスが表示されます。
先程作成した「SpinBoxBean」を指定します。[クラス名指定]を選択し、参照ボタン[...]をクリックします。
[型の選択]ダイアログボックスが表示されます。
[アイテムの選択]エディットボックスに[spin]と入力すると[一致する項目]に[SpinBoxBean]が表示されるので、これを選択します。
[クラス名]に「SpinBoxBean」が設定されます。
[OK]をクリックします。
[パレットに表示可能なBean]に追加された「myapp.javabeans.SpinBoxBean」と、[パレットに表示されているBean]の「MyBean」を選択し、[>]ボタンをクリックします。
MyBeanの下に、SpinBoxBeanが登録されます。
これで、JavaフォームにSpinBoxBeanを貼り付けることが可能になりました。
[OK]をクリックして、Beanの登録画面を閉じます。
Javaフォームの編集
[Frame1]のプロパティ[レイアウトマネージャ]を[<なし>]にします。
SpinBoxBeanを貼り付けます。
オブジェクトパレットの[MyBean]をクリックして選択してから、[SpinBoxBean]をクリックします。なお、BeanInfo定義でアイコンを指定した場合は、オブジェクトパレットにそのアイコンが表示されます。このチュートリアルではアイコンの指定をしていないので、オブジェクトパレットにデフォルトのアイコンが表示されています。
マウスを使ってJavaフォーム上でドラッグして配置します。
JBKの[複数行ラベル]を貼り付け、プロパティシートを使って、文字列プロパティに「増分値」と設定します。
JBKの[整数フィールド]を貼り付けます。
画面は以下のようになります。
イベント処理の記述
Frame1のinitUser$メソッドを変更します。ワークベンチのエディタエリアにある[Frame1.java]タブをクリックして、Javaエディタをアクティブにします。
initUser$メソッドの処理を記述します。
整数フィールド(jFFieldLong1)に初期値を設定する処理を追加します。太字の部分を追加します。
protected void initUser$() {
// この位置にユーザ定義初期化処理を記述します.
jFFieldLong1.setValue(SpinBoxBean1.getIncrement());
}
整数フィールド(jFFieldLong1)のactionイベントに処理を記述します。
[Beanリスト]ビューにある[Frame1] > [jFFieldLong1] > [イベント] > [action_actionPerformed]をダブルクリックします。
イベント処理の作成確認画面が表示された場合は、[はい]をクリックします。
「jFFieldLong1_action_actionPerformed」の処理手続きが表示されるので、太字の部分を追加します。
public void jFFieldLong1_action_actionPerformed(java.awt.event.ActionEvent e) {
if (!defaultEventProc(e)) {
// ここにイベント発生時の処理を記述します.
SpinBoxBean1.setIncrement(jFFieldLong1.getValue());
}
}
フレームが閉じた場合に、アプリケーションを終了するように処理を記述します。
フレームが閉じた場合は、windowイベントが発生します。windowイベントに対応した「window_windowClosing」イベントに処理を記述します。
[Beanリスト]ビューにある[Frame1] > [イベント] > [window_windowClosed]をダブルクリックします。
イベント処理の作成確認画面が表示されるので、「はい」をクリックします。
「Frame1_window_windowClosed」の処理手続きが表示されるので、太字の部分を追加します。
public void Frame1_window_windowClosed(java.awt.event.WindowEvent e) {
if(!defaultEventProc(e)) {
// ここにイベント発生時の処理を記述します.
System.exit(0);
}
}
Javaフォームを保存します。
Javaフォーム定義のメニューから[ファイル] > [上書き保存]を選択します。
メニューバーから [ファイル] > [終了]を選択し、Javaフォームを終了します。
ビルド
ビルドは、[プロジェクト]メニューの[自動的にビルド]が有効になっている場合は、Javaファイルなどのリソースファイルを保存すると自動的に実行されます。
[自動的にビルド]が無効になっている場合は、プロジェクトを選択し右クリックメニューの[プロジェクトのビルド]を選択するか、[プロジェクト]メニューの[プロジェクトのビルド]を選択します。
注意
SpinBoxBeanプロジェクトのクリーンについて
SpinBoxBeanプロジェクトをクリーンしてビルドすると失敗する場合があります。 これは、Javaフォーム定義がSpinBoxBean.jarを使用しているため、このファイルを削除できないからです。この場合は、Javaフォーム定義を終了して、かつ、SpinBoxTestプロジェクトを閉じてください。
JARファイルについては別途必要なため、これを作成します。
JARファイルの作成は、エクスポートウィザードから行います。
エクスポートウィザードを起動するには、[ファイル] > [エクスポート]を選択します。
エクスポートウィザードから[Java] > [JARファイル]を選択します。
JARエクスポートウィザードが表示されます。
[エクスポートするリソースの選択]で[LoginApplet] > [src] > [myapp.applet]を選択し、以下の設定項目を入力します。
情報を設定後、[完了]をクリックします。
設定項目 | 設定内容 |
---|---|
エクスポートするリソースの選択 | SpinBoxTest.java |
生成されたクラスファイルとリソースをエクスポート | チェックする |
JARファイル | SpinBoxTest/SpinBoxTest.jar |
JARファイルの内容を圧縮 | チェックする |
JARエクスポートでは以下のメッセージが出力されますが、問題ありません。
実行
実行するファイル(クラス)を選択します。 ワークベンチの[パッケージエクスプローラ]ビューにある[SpinBoxTest] > [src] > [myapp.javabeans] > [SpinBoxTest.java]をクリックします。
メニューバーから[実行] > [実行] > [Javaアプリケーション]を選択します。アプリケーションが起動し、Javaフォームが表示されます。
増分値に「10」を入力し、[Enter]キーを押します。
スピンボタンを押して、値が10単位に変更されることを確認します。
タイトルバーのクローズボタン([×]ボタン)をクリックして、アプリケーションを終了します。