Kenji Tachibana's Weblog

« 前の日(Dec月 12日, 2008年) | 日付別メイン | 次の日(Dec月 14日, 2008年) »

http://blogs.sun.com/kenji/date/20081214 2008年 12月 14日 日曜日

JavaFX でデータベースに簡単にアクセスできるという事実 - その3

その2で、JavaFX 側の準備も整ったので、本題の DB につなげてみましょう。まず、テキストフィールドに入力された ID を変数にバインドしておきます。この変数をボタンが押されたときに、ID として使用するためです。


var tmpid = "1";
:
:
SwingTextField {
columns: 10
text: bind tmpid with inverse
editable: true
},

次に、DB につなぐために CustomerJpaController インスタンスを作らないといけません。JavaFX でも、Java と同じように、new を使って、Java クラスから、インスタンスをつくることが可能です。

var DB = new CustomerJpaController();

var を使って JavaFX では変数を定義します。型推論を実装しているので、型を定義する必要はありません。このクラスは、その1で作成されたプロジェクトからインポートされるものなので、エディターを右クリック -> 「import を修正」を使って参照の問題を解決します。(これはもっともよく使う機能の1つなので、もし、使ったことがない方がいたら是非覚えておいたほうがいいと思います)。次にこのインスタンスをボタンが押されたときに作成し、テキストに入力された ID をもとに、Name を引っ張ってくる機能をボタンの onMouseClicked (クリックされたときに実行されるイベントとして書いてみます。この fucntion では、テキストフィールドからバインドされている tmpid を parseInt して、int 型の Id を求めます。これを、DB の findCutomer メソッドにいれ、Customer クラスのインスタンスを取得し、getName メソッドでその名前を Name に入れています。

SwingButton {
text: "OK"
onMouseClicked: function( e: MouseEvent ):Void {
Id = Integer.parseInt(tmpid);
Name = DB.findCustomer(Id).getName();
}
}

先ほどと同じく、インポートの修正を行うと、参照の問題が解決されます。ただし、Integer クラスのみ、JavaFx のプリミティブ型と衝突するので、

import java.lang.*;

のようにインポートします。最後に、この Name というを、表示させる Text にバインドしておけば、完了です。

Text {
font: Font {
size: 18
}
x: 10,
y: 50
content: bind Name
}

これで実装は完了です。簡単ですね。

ただし、Exception 処理等は何もしていないので、へんな値を入れるとすぐに Exception をはいてしまいます。Exception も Java と同じで、try - catch で処理すればいいので、試してみてください。
JavaFX のソースは、ここにおいておきました。

久しぶりの udpae & 和食

blog のアップデートを再開したので、このページも増やしていこうかと。食べるの大好きですから、テニスの次に。



和らぎ


横浜市青葉区藤が丘2-13-1山口第2コーポ1F


オーダー: 華 (コース)


コメント:
近所にある和食屋さんです。ずっと気になっていたのですが、なかなかいく機会がなくて。で、この前、私の誕生日にいってみました。小さなお店ですが、きれいで感じもなかなかよかったです。華 (4000円) のコースをたのんだのですが、どれもおいしい! 和食だと、おなかいっぱいにならないのが、どうも嫌で、あまりいかないのですが、コースということもあって、十分に満足いくものでした。特に、最後に出てくる「浜の炊き込みご飯」は絶品でした。うに、ホタテ、かになど、海の幸を贅沢につかってあって、その味がご飯にしみこんでいます。また、ベースとなっている出汁がいい味でした。何かはさっぱりわかりませんが。藤が丘駅周辺だと、フレンチの鉄人「キャトルフィユ」、イタリアンの鉄人「チンチン」、和食の鉄人「和らぎ」、中華の鉄人「味香亭 (鵬来も捨てがたい)」、ってところでしょうか。もちろん、ミシュランの何とか星のほうがおいしいのかもしれませんが、値段も手ごろだし、歩いて帰れることを考えたら、藤が丘で十分ですね。


評価: ★★★★★

JavaFX でデータベースに簡単にアクセスできるという事実 - その2

その1からの続きです。Java 側の作成は終わったので、次は、JavaFX で UI 側を作りましょう。まずは、概観を簡単に作ってしまいましょう。作りたいのは、テキストフィールドとボタン、そして、DB からのデータを表示する領域です。

HBox と VBox を使って、テキストフィールドと、ボタンを横に並べ、グループを作成し、このグループと、データを表示する領域 (Text) を縦にならべます。Stage の中身はこんなふうになります (まだ、外見だけですので、なにもしてくれません)


scene: Scene {
content: [
Group {
content: VBox {
content: [
Group {
content: HBox {
content: [
SwingTextField {
columns: 10
text: "textfield"
editable: true
},
SwingButton {
text: "OK"
}
]
}
},
Text {
font: Font {
size: 18
}
x: 10,
y: 50
content: "ResultText"
}
]
}
}
]
}

長いですが、スカスカなのは一目瞭然です。

次に、NetBeans の JavaFX プラットフォーム (JavaFX プロジェクトを作成したときに使われる環境です) には、JRE や JDBC など必要なライブラリが含まれていないので、これを追加します。その1の4と同じように、Java DB ドライバと、もうひとつ、Toplink Essensial を追加します。JRE の jar ファイルは、ライブラリとしては用意されていない (java プラットフォームにデフォルトで入っているので、ライブラリとしてはつくらなかったのかと思います) ので、JRE の jar ファイルを直接追加します。

- プロジェクトの「ライブラリ」を右クリックして、「JAR/フォルダを追加」を選択します。
- JRE がインストールされているフォルダの lib (たとえば、C:\Program Files\Java\jdk1.6.0_11\jre\lib) 以下の .jar ファイルをすべて選択し、「開く」をクリックします。

最後にその1で作った java クラスを使うため、プロジェクトをライブラリに追加してしまいましょう。

- プロジェクトの「ライブラリ」を右クリックして、「プロジェクトを追加」を選択します。
- その1で作ったプロジェクトを選択し、「Add project Jar file」をクリックします。

これで、ライブラリは以下のようになっているはずです。
(プロジェクト名はおそらくことなっていると思います)

これで、作成した java プログラムを JavaFX から呼び出す準備ができました。長くなったので、その3に続きまーす。


Valid HTML! Valid CSS!

This is a personal weblog, I do not speak for my employer.