これが私がやりたいことです:
アイテムのリストを表す参照があります。このリストの内容を表示するリストボックス(シーソー?)が欲しいのですが、自動的に更新されます(参照を変更するたびに)。
add-watchを使用して、refが変更されるたびに呼び出されるコールバックを追加できます。このコールバックは、リストボックスを更新するメソッドを呼び出す必要があります。
(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))))