Skip to content

Instantly share code, notes, and snippets.

@mnzk
Created June 4, 2013 17:37
Show Gist options
  • Save mnzk/5707895 to your computer and use it in GitHub Desktop.
Save mnzk/5707895 to your computer and use it in GitHub Desktop.
seesaw と JavaFX2 の連携サンプル.
(ns example-seesaw-jfx.core
(:gen-class)
(:require [seesaw.core :as sw])
(:import [javafx.scene Group Scene]
[javafx.scene.text Font Text]
[javafx.scene.shape Circle Rectangle]
javafx.scene.paint.Color
javafx.application.Platform
javafx.embed.swing.JFXPanel))
(defmacro jfx-run-later [& exprs]
`(Platform/runLater (fn [] ~@exprs)))
(defn new-jfx-view [pane]
(let [text (doto (Text. 100 100 "サンプル!")
(.setFont (Font. 60))
(.setUnderline true))
rect (doto (Rectangle. 200.0 150.0 (Color/web "green"))
(.setX 200)
(.setY 150))
circle (doto (Circle. 100.0 (Color/web "red" 0.6))
(.setCenterX 200)
(.setCenterY 220))
root (Group.)]
(doto (.getChildren root)
(.add rect)
(.add circle)
(.add text))
(.setScene pane (Scene. root Color/CYAN))))
(defn new-jframe [^JFXPanel pane]
(sw/frame :title "Seesaw & JavaFX2.2 Example"
:size [500 :by 500]
:on-close :dispose
:visible? true
:content pane))
(defn -main []
(sw/native!)
(let [pane (JFXPanel.)]
(jfx-run-later (new-jfx-view pane))
(sw/invoke-later (new-jframe pane))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment