JavaFXをマスターしよう:より深いJavaFXの世界へ

沖林正紀
2007-08-06 12:33:01
  • このエントリーをはてなブックマークに追加

 insert, deleteはトリガーと組み合わせることもできる。これにより、配列に要素が追加/削除されたときの処理を別ブロックで記述することができる。リスト4-7は買い物カートに商品を入れたり、取り消したりする操作を行う際に、カート内の商品の合計金額を計算するなどに応用した例だが、ほかにもさまざまな利用例が考えられるだろう。

リスト4-7 カートに購入する商品を入れて合計を計算

// カート
class Cart  {
  attribute tempTotal : Number;
  attribute items : Item*;
}

// 商品
class Item  {
  attribute name : String;
  attribute price : Number;
  function toString() : String;
}
function Item.toString() : String  {
  return "{name} {price format as <<###,###>>}円";
}

// トリガー(合計金額の計算と記録)
trigger on insert item into Cart.items  {
  tempTotal += item.price;
  println( "購入 : {item.toString()} | 合計 {tempTotal format as <<###,###>>}円" );
}
trigger on delete item from Cart.items  {
  tempTotal -= item.price;
  println( "取消 : {item.toString()} | 合計 {tempTotal format as <<###,###>>}円" );
}
trigger on Cart.items[old] = value  {
  tempTotal = tempTotal + value.price - old.price;
  println( "変更前 : {old.toString()}" );
  println( "変更後 : {value.toString()} | 合計 {tempTotal format as <<###,###>>}円" );
}

// カートに商品を入れてみる
var items = [
  // ..... Itemの配列 .....
];
var c = new <>();
insert items[0] into c.items;
insert items[2] into c.items;
delete c.items[1];
c.items[0] = items[1];
insert items[3] into c.items;

実行例

購入 : 音楽プレーヤー 15,000円 | 合計 15,000円
購入 : メモリーカード 5,000円 | 合計 20,000円
取消 : メモリーカード 5,000円 | 合計 15,000円
変更前 : 音楽プレーヤー 15,000円
変更後 : ワンセグチューナー 10,000円 | 合計 10,000円
購入 : USBメモリ 3,000円 | 合計 13,000円

 4回にわたって説明したとおり、JavaFXはJavaにはないさまざまな構文や演算子が揃っており、Javaとは一味違ったプログラミングが楽しめる。まだ説明しきれていない部分があるのは残念だが、詳細はJavaFXのリファレンスを参照していただきたい。

 また、JavaFXコンポーネントのソースコード(%JFX_HOME%\trunk\src\javafx以下の*.fxファイル)には、さまざまなテクニックが盛り込まれているので、こちらも参考にして、真のJavaFXマスターを目指していただきたい。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]