我第一次使用跷跷板创建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)
(button)
返回一个不是函数的按钮(组件)。如果您稍后将其用作(b :group groups)
,它实际上会尝试调用b
,就好像它是一个函数一样,并传递两个参数::group
和groups
。这就是它失败的原因,因为它不能cast button to function。
其次,我认为(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)
代码片段,但这对我来说是端到端的。