这就是我想做的:
我有一个代表项目列表的ref。我想要一个列表框(跷跷板?)来显示此列表内容,并自动更新(每当我更改引用时)。
最佳答案
您可以使用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))))
关于Clojure - 自动更新列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10775578/