要将监听器添加到 Seesaw 中的 UI 元素,请执行以下操作:
(listen ui-element :action (fn [_] (...)))
listen
:action
附加一个监听器,当在 ui-element1 上触发时调用提供的函数。它还返回一个函数。如果您执行该函数,它将删除与原始调用一起添加的侦听器。
我一直在使用 Seesaw 在 REPL 中对 UI 进行原型设计,并且我没有保留来自listen
.
如果我没有返回的函数,我该如何移除监听器?
您可以通过以下粗略方式手动删除侦听器:
user=> (def b (button :text "HI"))
user=> (listen b :action #(alert % "HI!"))
user=> (-> (frame :content b) pack! show!)
; click the button, see the alert
; manually remove listeners
user=> (doseq [l (.getActionListeners b)] (.removeActionListener b l))
; click the button, nothing happens
你可以把它放在一个辅助函数中,并随时使用它。以某种方式内置这个seesaw.event
或seesaw.dev
也会很好。欢迎补丁。:)
如果您没有该函数引用,则不能这样做。您可以做的是*1
在 REPL 中使用特殊的 vara,它基本上存储上次执行的表达式的结果,以从 REPL 中删除处理程序。