Добавление групп кнопок с помощью качелей

Я создаю графический интерфейс с использованием качелей впервые, и я застрял на том, как добавить кнопки в группы кнопок и отображать их (кнопки) в одном кадре. Это то, что я до сих пор.

(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) 

1 ответ

Решение

(button) возвращает кнопку (компонент), которая не является функцией. Если вы позже используете его как (b :group groups), он на самом деле пытается вызвать b как если бы это была функция, передавая ей два аргумента: :group а также groups, Вот почему он терпит неудачу, потому что он не может использовать кнопку для работы.

Во-вторых, я верю (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) фрагмент здесь, но это работает сквозной для меня.

Другие вопросы по тегам