SlideShare a Scribd company logo
1 of 50
Download to read offline
見よう見まねでJavaFX!

   株式会社ビルドシステム
      石丸 愛子
自己紹介
• Twitter:@_denko
• お仕事:Javaで業務アプリ作ってます
• 趣味 :スノボ、スキー、バレエ、
         ZOOKEEPER、スパイダーソリティア

今日は・・・
自己紹介
• Twitter:_denko
• お仕事:Javaで業務アプリ作ってます
• 趣味 :スノボ、スキー、バレエ、
         ZOOKEEPER、スパイダーソリティア

   さわり始めて3週間の
今日は・・・
   JavaFXのお話しをします★
JavaFXといえば・・・
リッチ!
グラフィカル!
Wonderful!
煌びやかな世界
でもSwingの後継者
  (って聞いた)
いぶし銀の業務アプリだって
   作れるはず!
作ってみました。

   検索

顧客一覧画面                  顧客編集画面
              顧客ID
   編集                         更新

    参照                       参照・更新



         DB
              Customerテーブル
作ってみました。
              Controller    FXMLファイル         Controller   FXMLファイル

                           検索
Application
               顧客一覧画面                          顧客編集画面
                                     顧客ID
                           編集                             更新

                           参照                       参照・更新



                                DB
                                     Customerテーブル
環境

• Java SE 7u7
• NetBeans 7.2
• Scene Builder 1.0
• MySQL Server 5.5
顧客一覧画面
顧客一覧画面
顧客一覧画面


you can add the data to the table by using
the setItems method of the TableView class:


      table.setItems(data).
顧客一覧画面



// Customerを検索
List<Customer> cList = CustomerAccess.selectAll();
ObservableList<Customer> oList =
                 FXCollections.observableArrayList(cList);

// テーブルに設定
tableView.setItems(oList);
顧客一覧画面
顧客一覧画面
顧客一覧画面

    DB

           Customerテーブル
    1    suzuki   ichiro   fuga
    2    yamada taro       hoge
顧客一覧画面

    DB

           Customerテーブル
    1    suzuki   ichiro   fuga
    2    sato     taro     hoge
顧客一覧画面

    DB

           Customerテーブル
    1    suzuki   ichiro   fuga
    2    sato     taro     hoge
顧客一覧画面
■検索ボタン押下時
   // Customerを検索                      “sato” が入ってる
   List<Customer> cList = CustomerAccess.selectAll();
   ObservableList<Customer> oList =
               FXCollections.observableArrayList(cList);
   // テーブルに設定
   tableView.setItems(oList);
顧客一覧画面
■検索ボタン押下時
   // Customerを検索                      “sato” が入ってる
   List<Customer> cList = CustomerAccess.selectAll();
   ObservableList<Customer> oList =
               FXCollections.observableArrayList(cList);
   // テーブルに設定
   tableView.setItems(oList);

           画面は”yamada”のまま(:_;)
顧客一覧画面
• ObservableList は ListChangeListener
  をもっている
  リストの件数が変更されればリフレッシュする
顧客一覧画面
■初期化時
   // TableViewをデータ0件で初期化
   List<Customer> cList = new ArrayList<>(0);
   ObservableList<Customer> oList =
         FXCollections.observableArrayList(cList);
   tableView.setItems(oList);
■検索ボタン押下時
                                          “sato” が入ってる
   tableView.getItems().clear();
   // Customerを検索
   List<Customer> cList = CustomerAccess.selectAll();
   tableView.getItems().addAll(cList);
顧客一覧画面
■初期化時
   // TableViewをデータ0件で初期化
   List<Customer> cList = new ArrayList<>(0);
   ObservableList<Customer> oList =
         FXCollections.observableArrayList(cList);
   tableView.setItems(oList);
■検索ボタン押下時
                                          “sato” が入ってる
   tableView.getItems().clear();
   // Customerを検索
   List<Customer> cList = CustomerAccess.selectAll();
   tableView.getItems().addAll(cList);

            画面は”yamada”のまま(:_;)
顧客一覧画面

• ObservableList は ListChangeListener
  をもっている
  リストの件数が変更されればリフレッシュする

  clear、addAllでは最終的な件数が変わらず
  リフレッシュしない
顧客一覧画面
顧客一覧画面

We are refreshing data in a tableview using
layout():
顧客一覧画面

We are refreshing data in a tableview using
layout():
      solution for a refresh would be great
顧客一覧画面

We are refreshing data in a tableview using
layout():
      solution for a refresh would be great

           Without layout(), table is not refreshed ...
顧客一覧画面

We are refreshing data in a tableview using
layout():
      solution for a refresh would be great

           Without layout(), table is not refreshed ...



                 there should be no refresh problem.
顧客一覧画面
■初期化時
   // TableViewをデータ0件で初期化
   (略)
■検索ボタン押下時
   tableView.getItems().clear();
   tableView.layout();
   // Customerを検索
   List<Customer> cList = CustomerAccess.selectAll();
   tableView.getItems().addAll(cList);
顧客一覧画面
         できた★
続きましてー
顧客編集画面
   前画面から
   IDをもらう
顧客編集画面

 前画面から
 IDをもらう
顧客編集画面


  前画面から
IDをもらう??
顧客編集画面
顧客編集画面




 public static なフィールド
  にセットすればいいのよ
顧客編集画面




         public static なフィールド
          にセットすればいいのよ
(>_<)
顧客編集画面




  ~(中略) ~
顧客編集画面


 // FXMLファイルをロード
FXMLLoader fxmlLoader = new FXMLLoader(
         getClass().getResource("fxml/UpdateScreen.fxml"));
Parent root = (Parent) fxmlLoader.load();
Scene scene = new Scene(root );

 // ロードしたFXMLファイルに関連づくControllerを取得
                              ~(中略) ~
final UpdateScreenController controller =
          (UpdateScreenController) fxmlLoader.getController();
顧客編集画面
 // FXMLファイルをロード
Parent root = FXMLLoader.load(
            getClass().getResource("fxml/SearchScreen.fxml"));
Scene scene = new Scene(root);

 // FXMLファイルをロード
FXMLLoader fxmlLoader = new FXMLLoader(
         getClass().getResource("fxml/UpdateScreen.fxml"));
Parent root = (Parent) fxmlLoader.load();
Scene scene = new Scene(root );

 // ロードしたFXMLファイルに関連づくControllerを取得
final UpdateScreenController controller =
          (UpdateScreenController) fxmlLoader.getController();
顧客編集画面
■顧客一覧画面Controller                          ■顧客編集画面Controller

  fxmlLoader.load();                         Initialize(URL, ResourceBundle)

  controller.setId(id);                      public void setId(Integer id){
                                                this.id = id;
                                             }
  newStage.setOnShowing(new
  EventHandler<WindowEvent>() {
     @Override
     public void handle(WindowEvent t) {
       // 画面が開いたことをControllerに通知             public void onShowing(){
        controller.onShowing();                // id指定でCustomer検索
     }                                       }
  );
顧客編集画面
   できた★
まとめ
• TableViewはSwing時代よりすっきりした印象
• まだ文献が少なく、戸惑うこともあり
• あ!櫻庭さんの次回ITpro連載は
  「TableView」だ!!

     JavaFXが繁栄して、文献が増えていく
     と嬉しいな
ご清聴ありがとうございました。
参考文献
•   Using JavaFX UI Controls
     – http://docs.oracle.com/javafx/2/ui_controls/table-view.htm
•   Ability to force a ListView or TableView refresh
     – http://javafx-jira.kenai.com/browse/RT-22599
•   Javafx 2.0 How-to Application.getParameters() in a Controller.java file
     – http://stackoverflow.com/questions/10134856/javafx-2-0-how-to-
        application-getparameters-in-a-controller-java-file
•   Thread: Cannot access controller
     – https://forums.oracle.com/forums/thread.jspa?threadID=2379964

More Related Content

Viewers also liked

Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
Taiji Miyabe
 
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
Shinji Kobayashi
 
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみたJavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Satoshi Takami
 

Viewers also liked (10)

JavaFX 8って何だ!! - JavaFX最新情報 -
JavaFX 8って何だ!! - JavaFX最新情報 -JavaFX 8って何だ!! - JavaFX最新情報 -
JavaFX 8って何だ!! - JavaFX最新情報 -
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
iBeaconを使ってみよう!気軽に使える近距離無線通信
iBeaconを使ってみよう!気軽に使える近距離無線通信iBeaconを使ってみよう!気軽に使える近距離無線通信
iBeaconを使ってみよう!気軽に使える近距離無線通信
 
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
 
Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1
 
iOS7アプリ同士の近距離通信どれがいい?
iOS7アプリ同士の近距離通信どれがいい?iOS7アプリ同士の近距離通信どれがいい?
iOS7アプリ同士の近距離通信どれがいい?
 
Unity ゲーム開発
Unity ゲーム開発Unity ゲーム開発
Unity ゲーム開発
 
Migration from Swing to JavaFX
Migration from Swing to JavaFXMigration from Swing to JavaFX
Migration from Swing to JavaFX
 
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみたJavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
 

Similar to 見よう見まねでJavaFX!

データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
Naoyuki Yamada
 
8 power night2014_nakamura
8 power night2014_nakamura8 power night2014_nakamura
8 power night2014_nakamura
TerraSky
 
勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発
Kazuki Nakajima
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
Yusuke Ando
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
Hideki Hashizume
 
JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤
Yuichi Sakuraba
 

Similar to 見よう見まねでJavaFX! (20)

データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用
 
Visualforce + jQuery
Visualforce + jQueryVisualforce + jQuery
Visualforce + jQuery
 
C# Database操作6 SqlDataAdapterを使用したデータの更新-
C# Database操作6  SqlDataAdapterを使用したデータの更新-C# Database操作6  SqlDataAdapterを使用したデータの更新-
C# Database操作6 SqlDataAdapterを使用したデータの更新-
 
8 power night2014_nakamura
8 power night2014_nakamura8 power night2014_nakamura
8 power night2014_nakamura
 
勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発
 
Microsoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data WarehouseMicrosoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data Warehouse
 
Android Architecture Componentsの新機能
Android Architecture Componentsの新機能Android Architecture Componentsの新機能
Android Architecture Componentsの新機能
 
継続的8章
継続的8章継続的8章
継続的8章
 
Tide - SmalltalkでSPA
Tide - SmalltalkでSPATide - SmalltalkでSPA
Tide - SmalltalkでSPA
 
SpringBootによるDB更新
SpringBootによるDB更新SpringBootによるDB更新
SpringBootによるDB更新
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
 
20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料
20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料
20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料
 
Team Foundation Server プロセステンプレートの変更 手順書
Team Foundation Server プロセステンプレートの変更 手順書Team Foundation Server プロセステンプレートの変更 手順書
Team Foundation Server プロセステンプレートの変更 手順書
 
Windows ストアアプリのgrid viewを入門してみた
Windows ストアアプリのgrid viewを入門してみたWindows ストアアプリのgrid viewを入門してみた
Windows ストアアプリのgrid viewを入門してみた
 
JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤
 
学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)
 
構築手順 Ssis イベントログ取込み 第2版
構築手順 Ssis イベントログ取込み 第2版構築手順 Ssis イベントログ取込み 第2版
構築手順 Ssis イベントログ取込み 第2版
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
 

Recently uploaded

Recently uploaded (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

見よう見まねでJavaFX!