読者です 読者をやめる 読者になる 読者になる

Code Aquarium

minazoko's blog -*- 水底のブログ -*-

(Clojure)JavaFX2とseesawの連携

Clojure JavaFX2

JavaFX2には JFXPanel という swing向けのコントロールがあります。
これをswingのJFrameに載せると、swing内で動くJavaFX2アプリが作れます。

swingでできるってことは seesawでもできるはずですよね。
というわけで試してみました。「連携」というほどのことはしていませんが。

f:id:minazoko:20130605025207p:plain

ポイントは、JavaFX2, Swing それぞれを別々のスレッドで動作させるところです。

SwingではSwingUtilities/InvokeLaterを使うことでSwingのコントロール操作を別スレッドへ委譲しますが、JavaFX2にも Platform/runLater というほとんど同じ用途のメソッドが用意されています。

seesawではinvoke-laterというSwingUtilities/InvokeLaterのラッパーマクロがありますので、それにあわせてJavaFX2側にも jfx-run-laterというマクロを作ってみました。

seesawとJavaFX2の世界が別々に作られ、JFXPanelが仲介役になっているのが分かると思います。