Clojure 跷跷板关键事件未触发
我试图在我的跷跷板框架上收听:按键按下和:按键释放事件,但这些事件没有触发。我已经将问题缩小到一个listbox——当listbox存在时,帧不再捕获关键事件。下面是我的代码的简化版本,它显示了以下行为:Clojure 跷跷板关键事件未触发,clojure,seesaw,Clojure,Seesaw,我试图在我的跷跷板框架上收听:按键按下和:按键释放事件,但这些事件没有触发。我已经将问题缩小到一个listbox——当listbox存在时,帧不再捕获关键事件。下面是我的代码的简化版本,它显示了以下行为: (ns ainur.example (:use seesaw.core)) (let [lst (listbox :model ["Chiptune" "Sinewave"]) f (frame :title "Ainur" :on-close :e
(ns ainur.example
(:use seesaw.core))
(let [lst (listbox :model ["Chiptune" "Sinewave"])
f (frame :title "Ainur"
:on-close :exit
:size [1024 :by 768]
:content (border-panel :hgap 10 :vgap 10
:center (label "Center")
:north (label "North")
:south (label "South")
:west lst))]
(listen lst :selection (fn [e]
(let [active-inst (selection e)]
(println active-inst))))
(listen f
:key-pressed (fn [e]
(println "Key pressed"))
:key-released (fn [e]
(println "Key released")))
(invoke-later
(native!)
(show! f)))
有人能帮我弄清楚为什么没有触发关键事件吗?任何帮助都将不胜感激。提前谢谢 我在seesaw的Google Group上发布了这个问题,并从seesaw的创建者Dave Ray那里得到了非常好的回答。我将其张贴在此处,以防其他人遇到此问题: “嗨,一旦层次结构中有了另一个小部件(如listbox),它就会抓住键盘焦点,这样事件就永远不会进入框架。我认为最好的办法是将按键侦听器放在一个嵌套的小部件(如面板)上,然后给它键盘焦点。这里可以看到类似的示例: :key-typed事件绑定到画布,然后使用.requestFocusInWindow为其提供键盘焦点。“ 非常感谢,戴夫