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 のソースは、ここにおいておきました。

投稿されたコメント:

コメント
コメントは無効になっています。
About

kenji

Search

Archives
« 4月 2015
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  
       
今日