What is the best way to do GUIs in Clojure?

后端 未结 16 1379
逝去的感伤
逝去的感伤 2020-12-07 06:47

What is the best way to do GUIs in Clojure?

Is there an example of some functional Swing or SWT wrapper? Or some integration with JavaFX declarative GUI description

16条回答
  •  -上瘾入骨i
    2020-12-07 07:18

    I will humbly suggest Seesaw.

    Here's a REPL-based tutorial that assumes no Java or Swing knowledge.


    Seesaw's a lot like what @tomjen suggests. Here's "Hello, World":

    (use 'seesaw.core)
    
    (-> (frame :title "Hello"
           :content "Hello, Seesaw"
           :on-close :exit)
      pack!
      show!)
    

    and here's @Abhijith and @dsm's example, translated pretty literally:

    (ns seesaw-test.core
      (:use seesaw.core))
    
    (defn handler
      [event]
      (alert event
        (str "Hello from Clojure. Button "
          (.getActionCommand event) " clicked.")))
    
    (-> (frame :title "Hello Swing" :on-close :exit
               :content (button :text "Click Me" :listen [:action handler]))
      pack!
      show!)
    

提交回复
热议问题