2011-08-22 4 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의 박스는 기본적으로 + 점액 이맥스) 등, 호출 (사용 '실험) - 작품 - 그리고는 전화

(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"레이블 주위에 포장되어 있기 때문에 창 프레임이 매우 작습니다. 당신이 그것을 놓치지 않았다는 확신합니까, 그리고 창문은 실제로 당신의 바탕 화면 어딘가에 자리 잡고 있습니까?

또한 내가 생각하기에 (나는 틀릴 수도있다.)하지만 우분투 기본 IcedTea JRE에 스윙 문제가 있다고 생각했다. 이것을 사용한다면 적절한 Sun/Oracle JRE를 시도해 보라.

2

처음에는 이벤트 발송 스레드에서 스윙에 대해 이야기해야합니다. clojure.contrib.swing-utils/do-swing을보십시오.