SlideShare a Scribd company logo
1 of 35
5分で!
Starting JavaFX
                         @hakurai
自己紹介
• @hakurai


• 奈良生まれ奈良育ち


• Java + Swing


• 流れ的にJavaFX


• 模型とか→
Twitterクライアントを作る




        &
NetBeans IDE
JavaFX プロジェクトを作成する
FXML



コントローラクラス
FXML



コントローラクラス
AnchorPane

     TextArea

      Button

     ListView
ビューの構造を表すFXML




                AnchorPane

                     TextArea

                      Button

                     ListView
XML?めんどくさい!
JavaFX Scene Builder
コントローラクラス
FXML アノテーション
fx:id=”tweetButton”
fx:id=”inputTweetArea”




     fx:id=”statusList”
fx:id=”tweetButton”
fx:id=”inputTweetArea”




     fx:id=”statusList”
onAction=”#handleTweetAction”
ステータスをStreaming APIで取得
非同期処理
イベント処理            画面更新

    JavaFX Application
         Thread
イベント処理          画面更新

    JavaFX Application
         Thread 重い処理
イベント処理          画面更新

    JavaFX Application
         Thread 重い処理
フリーズ




イベント処理          画面更新

    JavaFX Application
         Thread 重い処理
JavaFX Application
                     別スレッド
     Thread
重い処理は別のスレッド



tweetExecutor.execute(new Runnable() {
        @Override
        public void run() {
          try {
               twitterServiceAgent.updateStatus(text);
          } catch (TwitterException ex) {
          }
        }
    });
JavaFX Application
                     別スレッド
     Thread
データ不整合




JavaFX Application
                     別スレッド
     Thread
JavaFX Application
                     別スレッド
     Thread
画面の更新はJavaFX Application Thread

 public void onStatus(final Status status) {
   Platform.runLater(new Runnable() {
      @Override
      public void run() {
         if (statusList.size() >= maxStatusNum) {
             statusList.remove(maxStatusNum - 1);
         }

             statusList.add(0, status);
         }
   });
早速動かしてみた
テキストしか出ない・・・




               status.toString()
ListCell と CellFactory
セルに表示するオブジェクトを返す



         ListCell<Status>


                       StatusCellFactory

     Callback<ListView<Status>, ListCell<Status>>
ListCell<Status>

More Related Content

What's hot

明日から使える Java SE 7
明日から使える Java SE 7明日から使える Java SE 7
明日から使える Java SE 7
Yuichi Sakuraba
 
Web講座 第9回
Web講座 第9回Web講座 第9回
Web講座 第9回
nanametown
 
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかSQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
yancya
 

What's hot (20)

Sansan様 登壇資料
Sansan様 登壇資料Sansan様 登壇資料
Sansan様 登壇資料
 
LLoT2016 Java Update
LLoT2016 Java UpdateLLoT2016 Java Update
LLoT2016 Java Update
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかJavaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
 
MoteMote Compiler Plugin
MoteMote Compiler PluginMoteMote Compiler Plugin
MoteMote Compiler Plugin
 
HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)
 
Heap statsfx analyzer
Heap statsfx analyzerHeap statsfx analyzer
Heap statsfx analyzer
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
REACT & WEB API
REACT & WEB APIREACT & WEB API
REACT & WEB API
 
React入門-JSONを取得して表示する
React入門-JSONを取得して表示するReact入門-JSONを取得して表示する
React入門-JSONを取得して表示する
 
Reactテストに役立つ実装の工夫
Reactテストに役立つ実装の工夫Reactテストに役立つ実装の工夫
Reactテストに役立つ実装の工夫
 
freee社でのReactiveCocoa活用例
freee社でのReactiveCocoa活用例freee社でのReactiveCocoa活用例
freee社でのReactiveCocoa活用例
 
Gcflt会2017/4/2
Gcflt会2017/4/2Gcflt会2017/4/2
Gcflt会2017/4/2
 
モダン JavaScript における非同期処理 - Promise, async/await -
モダン JavaScript における非同期処理 - Promise, async/await -モダン JavaScript における非同期処理 - Promise, async/await -
モダン JavaScript における非同期処理 - Promise, async/await -
 
明日から使える Java SE 7
明日から使える Java SE 7明日から使える Java SE 7
明日から使える Java SE 7
 
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
覚醒JavaScript  -ES6で作るIsomophicアプリケーション-覚醒JavaScript  -ES6で作るIsomophicアプリケーション-
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
 
Deep dive into instanceof
Deep dive into instanceofDeep dive into instanceof
Deep dive into instanceof
 
Web講座 第9回
Web講座 第9回Web講座 第9回
Web講座 第9回
 
キメるClojure
キメるClojureキメるClojure
キメるClojure
 
HttpClientModule
HttpClientModuleHttpClientModule
HttpClientModule
 
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかSQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
 

Viewers also liked

software configuration management
software configuration managementsoftware configuration management
software configuration management
Fáber D. Giraldo
 
Software Configuration Management
Software Configuration ManagementSoftware Configuration Management
Software Configuration Management
Chandan Chaurasia
 
Dfd examples
Dfd examplesDfd examples
Dfd examples
Mohit
 

Viewers also liked (13)

Data flow diagram for order system
Data flow diagram for order systemData flow diagram for order system
Data flow diagram for order system
 
Java fx tools
Java fx toolsJava fx tools
Java fx tools
 
Improving Your Interview Skills for Residency 2007
Improving Your Interview Skills for Residency 2007Improving Your Interview Skills for Residency 2007
Improving Your Interview Skills for Residency 2007
 
Lecture 06 Software Configuration Management
Lecture 06 Software Configuration ManagementLecture 06 Software Configuration Management
Lecture 06 Software Configuration Management
 
Data Flow Diagram (DFD)
Data Flow Diagram (DFD)Data Flow Diagram (DFD)
Data Flow Diagram (DFD)
 
Interview Skills
Interview SkillsInterview Skills
Interview Skills
 
Software Configuration Management
Software Configuration ManagementSoftware Configuration Management
Software Configuration Management
 
software configuration management
software configuration managementsoftware configuration management
software configuration management
 
Interview Skills
Interview SkillsInterview Skills
Interview Skills
 
Software Configuration Management
Software Configuration ManagementSoftware Configuration Management
Software Configuration Management
 
Data Flow Diagram
Data Flow DiagramData Flow Diagram
Data Flow Diagram
 
Dfd examples
Dfd examplesDfd examples
Dfd examples
 
How to make effective presentation
How to make effective presentationHow to make effective presentation
How to make effective presentation
 

Similar to Starting java fx

JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤
Yuichi Sakuraba
 
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
Yuichi Sakuraba
 
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
Sadao Tokuyama
 
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話
emorins
 

Similar to Starting java fx (20)

From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
From Swing to JavaFX  - SwingからJavaFXへのマイグレーションガイドFrom Swing to JavaFX  - SwingからJavaFXへのマイグレーションガイド
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
 
JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤
 
Java EE8 Report
Java EE8 ReportJava EE8 Report
Java EE8 Report
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentials
 
JavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jpJavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jp
 
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
 
Ajax 応用
Ajax 応用Ajax 応用
Ajax 応用
 
Scene BuilderでFXML
Scene BuilderでFXMLScene BuilderでFXML
Scene BuilderでFXML
 
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
 
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX UpdateJavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX Update
 
20081003
2008100320081003
20081003
 
Visualforce + jQuery
Visualforce + jQueryVisualforce + jQuery
Visualforce + jQuery
 
何が変わった JavaFX 2.0
何が変わった JavaFX 2.0何が変わった JavaFX 2.0
何が変わった JavaFX 2.0
 
CLRH_120414_WFTDD
CLRH_120414_WFTDDCLRH_120414_WFTDD
CLRH_120414_WFTDD
 
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
 
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
 
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
 
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話
 
Best practice laravel
Best practice laravelBest practice laravel
Best practice laravel
 

More from Kazuhiro Eguchi (8)

Haxe
HaxeHaxe
Haxe
 
JavaFX8
JavaFX8JavaFX8
JavaFX8
 
実践Knockout
実践Knockout実践Knockout
実践Knockout
 
なれる!クラスローダー
なれる!クラスローダーなれる!クラスローダー
なれる!クラスローダー
 
Knockout
KnockoutKnockout
Knockout
 
Java 並行処理の基礎update1
Java 並行処理の基礎update1Java 並行処理の基礎update1
Java 並行処理の基礎update1
 
並行処理プログラミングの深淵~Java仮想マシン仕様 スレッドとロック~
並行処理プログラミングの深淵~Java仮想マシン仕様 スレッドとロック~並行処理プログラミングの深淵~Java仮想マシン仕様 スレッドとロック~
並行処理プログラミングの深淵~Java仮想マシン仕様 スレッドとロック~
 
Automate the Swing application testing
Automate the Swing application testingAutomate the Swing application testing
Automate the Swing application testing
 

Starting java fx

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n