2016-02-18 2 views
0

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

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

Я не могу найти много учебников по этому вопросу, поэтому, возможно, мне не хватает чего-то очевидного.

Вот что я пытаюсь сделать ...

(defn window [cuisine-input rating-input location-slider] 
     (seesaw/frame 
     :title "Resturant Selector" 
     :content (cuisine-input rating-input location-slider) 
     :width 200 
     :height 50 
     :on-close :exit)) 


    (defn -main 
    [& args] 

     (def cuisine (seesaw/input "Please choose a type of cuisine: " 
          :choices ["Indian" "Japanese" "Chinese" 
            "Burgers"])) 

     (def rating (seesaw/input "Please choose the ideal rating: " 
         :choices ["1 star" "2 stars" "3 stars" "4 stars" 
            "5 stars"])) 
     (def location (seesaw/slider 
          :value 5 :min 0 :max 20 
          :minor-tick-spacing 1 :major-tick-spacing 2 
          :snap-to-ticks? true 
          :paint-ticks? true :paint-labels? true)) 

     (def main-window (window cuisine rating location)) 
     (seesaw/pack! (window main-window)) 
     (seesaw/show! (window main-window)) 

)

Я также пытался что-то вроде этого:

(seesaw/frame :title "Resturant Selector" :on-close :exit 
      :content (:items [ 
        (seesaw/input "Please choose a type of cuisine: " 
          :choices ["Indian" "Japanese" "Chinese" 
            "Burgers"]) 

        (seesaw/input "Please choose the ideal rating: " 
         :choices ["1 star" "2 stars" "3 stars" "4 stars" 
            "5 stars"]) 

        (seesaw/slider 
         :value 5 :min 0 :max 20 
         :minor-tick-spacing 1 :major-tick-spacing 2 
         :snap-to-ticks? true 
         :paint-ticks? true :paint-labels? true)] 
          ) 
      ) 
+0

Я не знаю качелях, но я заметил, что мерзавец репо не обновлялся с Clojure 1.4.0. Если вы используете более позднюю версию Clojure, я задаюсь вопросом, может ли это быть частью проблемы. – Mars

+0

Попробуйте изменить '(качели/пакет! (Окно главного окна)) (качели/шоу! (Окно главного окна))' to '(качели/пакет! Главное окно) (качели/шоу! Main- window) ' –

ответ

1

seesaw/input создает input dialog, пока вы хочу создать JComboBox. wiki имеет хорошую помощь в создании виджета, и вы можете найти список доступных виджетов в API doc.

Чтобы добавить более одного виджета в a frame, вам необходимо a container.

Таким образом, для вашего конкретного примера, вам нужно что-то похожее на:

(defn window [content] 
    (seesaw/frame 
    :title "Resturant Selector" 
    :content content 
    :width 200 
    :height 50 
    :on-close :close)) 

(defn -main 
    [& args] 
    (let [rating-label (seesaw/label :text "Please choose rating:") 
     rating (seesaw/combobox :model ["1 star" "2 star"]) 
     location (seesaw/slider 
        :value 5 :min 0 :max 20 
        :minor-tick-spacing 1 :major-tick-spacing 2 
        :snap-to-ticks? true 
        :paint-ticks? true :paint-labels? true) 

     main-window (window (seesaw/vertical-panel :items [rating-label rating location]))] 
    (seesaw/invoke-later 
     (seesaw/pack! main-window) 
     (seesaw/show! main-window)))) 
+0

Спасибо, это именно то, что я искал. Я очень ценю это. –

+0

@LucasRudd рассмотрит возможность размещения зеленой галочки рядом с этим ответом. Ура! –

Смежные вопросы