2011-08-22 80 views
2

這裏有一小段代碼。Clojure:Java GUI問題

(ns experiments 
    (:import (javax.swing JFrame JLabel))) 

(defn create-frame [title text] 
    (doto (JFrame. title) 
    (.add (JLabel. text)) 
    (.pack) 
    (.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE) 
    (.setVisible true))) 

現在我運行一個REPL(Clojure的盒子,基本上emacs的+煤泥),用正確的類路徑啓動它等等,請致電(使用「實驗) - 它的工作原理 - 然後調用

(create-frame "Foo" "Bar")

然後......沒什麼。 REPL永遠掛起,沒有框架出現,沒有任何東西。

+0

我剛剛注意到我打錯輸入了:import as import。我的副本里有它的權利。 – Narvius

回答

0

您的代碼適用於在Ubuntu 11.04上使用Sun的JDK 1.6.0_26和Clojure 1.2.1 ...但窗口框架非常小,因爲它圍繞着一個小的「Bar」標籤打包。你確定你沒有錯過它,窗口實際上在你的桌面上的某個位置上?當我回憶起(我可能在這裏錯了),但我認爲有與Ubuntu的默認IcedTea JRE的Swing問題 - 如果你使用這個,請嘗試適當的Sun/Oracle JRE而不是。

2

您應該從事件調度線程的Swing開始討論。看看clojure.contrib.swing-utils/do-swing