gpt4 book ai didi

clojure - 如果我没有保留返回函数,如何从 Seesaw 中的对象中删除监听器?

转载 作者:行者123 更新时间:2023-12-02 16:57:24 25 4
gpt4 key购买 nike

要将监听器添加到 Seesaw 中的 UI 元素,请执行以下操作:

(listen ui-element :action (fn [_] (...)))

listen 附加一个监听器,当在 `ui-element1 上触发 :action 时,该监听器调用提供的函数。它还返回一个函数。如果执行该函数,它将删除通过原始调用添加的监听器。

我一直在使用 Seesaw 在 REPL 中对 UI 进行原型(prototype)设计,并且没有保留 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.eventseesaw.dev 也会很好。欢迎补丁。 :)

关于clojure - 如果我没有保留返回函数,如何从 Seesaw 中的对象中删除监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16704743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com