2014-07-08 75 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在同一frame.With代码我有,我得到以下错误; java.lang.ClassCastException:seesaw.core.proxy $ javax.swing.JButton $标记$ fd407141无法投射to clojure.lang.IFn – mwaks

回答

3

(button)返回不是函数的按钮(组件)。如果您以后使用它作为(b :group groups),它实际上会尝试调用b,就好像它是一个函数,并将其传递给两个参数::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!)) 

你也许可以用你的(display)功能,而不是这个(invoke-later)片断在这里,但这个工程最终到终端的我。

+0

谢谢康拉德的伟大解释!它的工作! – mwaks