2012-05-27 27 views

cevap

4

Sen her değiştirildiğinde zaman ref çağrılacak geri arama eklemek için add-watch kullanabilirsiniz.

(def data (ref [1 2 3])) 

(defn list-model 
    "Create list model based on collection" 
    [items] 
    (let [model (javax.swing.DefaultListModel.)] 
    (doseq [item items] (.addElement model item)) 
    model)) 

(def listbox (seesaw.core/listbox :model [])) 

(add-watch data nil 
    (fn [_ _ _ items] (.setModel listbox (list-model items)))) 
+0

sayesinde çok; bu mükemmel çalıştı –

4

bunu yapmanın bir başka yolu seesaw.bind kullanarak, liste kutusu modeline ref içeriğini bağlamak için: Bu geri arama listbox günceller yöntemini çağırmalıdır.

(require [seesaw core [bind :as b]]) 
(def lb (listbox)) 
(def r (ref [])) 
(b/bind r (b/property lb :model)) 

Seesaw.bind kitaplığı iyi keşfedilmeye değer, IMHO. API, her şeyin nasıl birbirine uyduğu konusunda bir fikriniz olduğunda belgelenmiştir; this blog post güzel bir tanıtımdır.