2014-07-08 6 views
0

처음으로 시소를 사용하여 GUI를 만들고 있는데 버튼 그룹에 버튼을 추가하고 동일한 프레임에 버튼을 표시하는 방법에 대해 고민하고 있습니다. 이것은 내가 지금까지 가지고있는 것이다.시소를 사용하여 버튼 그룹 추가하기

(def b (button :text "Start a new Project")) 

(def c (button :text "Continue an Existing Project")) 


(def groups (button-group)) 

(flow-panel :items [(b :group groups) 
         (c :group groups)]) 

(display groups) 
+0

정확히 어떤 문제가 있습니까? –

+0

동일한 프레임에 버튼 b와 c를 표시하고 싶습니다. 코드에서 다음 오류가 발생합니다. java.lang.ClassCastException : seesaw.core.proxy $ javax.swing.JButton $ Tag $ fd407141을 캐스팅 할 수 없습니다. clojure.lang.IFn – mwaks

답변

3

(button)은 기능이 아닌 버튼 (구성 요소)을 반환합니다. 나중에 (b :group groups)으로 사용하면 실제로는 을 함수처럼 호출하고 두 개의 인수 (:groupgroups)를 전달합니다. 그것이 버튼을 기능으로 변환 할 수 없으므로 실패하는 이유입니다.

둘째로, (button)은 그룹이 의미가없는 일반 JButton을 만듭니다. (radio)과 같은 라디오 버튼을 사용하셨습니까?

이 두 가지 중 하나가 예상 한대로 작동해야합니다.

라디오 버튼 :

(def groups (button-group)) 

(def b (radio :text "Start a new Project" :group groups)) 

(def c (radio :text "Continue an Existing Project" :group groups)) 

(def panel 
    (flow-panel :items [b c])) 

(invoke-later 
    (-> (frame :content panel :on-close :dispose) pack! show!)) 

일반 버튼 :

(def b (button :text "Start a new Project")) 

(def c (button :text "Continue an Existing Project")) 

(def panel 
    (flow-panel :items [b c])) 

(invoke-later 
    (-> (frame :content panel :on-close :dispose) pack! show!)) 

당신은 아마 여기 (invoke-later) 조각 대신 (display) 기능을 사용할 수 있습니다, 그러나 이것은 나를 위해 엔드 - 투 - 엔드 작동합니다.

+0

큰 설명을 주신 Konrad에게 감사드립니다! – mwaks

관련 문제