我用跷跷板创建了一个java框架
(def f (frame :title "my app"))
我想捕捉用户按键。
我试着在这里和那里收集代码并以此结束
(ns myapp.core
(:use seesaw.core)
(:use seesaw.font)
(:import [java.awt.event ActionListener KeyListener KeyEvent])
)
(defn input-listener []
(proxy [ActionListener KeyListener] []
(actionPerformed [e])
(keyPressed [e] (alert e "You pressed a key!"))
(keyReleased [e])
(keyTyped [e])))
(doto f
(.addKeyListener (input-listener)))
但它根本不起作用。 我是 clojure 的新手,因为我对 JAVA 完全一无所知(也不想深入了解它),所以我有点迷茫。 有没有一种简单的方法可以在整个应用程序中捕获用户对键盘快捷键的输入?
请帮忙。
最佳答案
如果您只想将特定按键映射到框架中的不同功能,seesaw.keymap/map-key可能是你想要的:
; When 'e' is pressed in frame f, call this function
(map-key f "e" (fn [_] (... do something ))
(这一切都建立在@Bill 引用的键绑定(bind)内容之上)
查看 map-key
的文档以获取更多信息。正如其他答案所暗示的那样,Swing 中的键盘处理甚至比 Swing 的其余部分更糟糕,因此请准备好承受一些痛苦:)
关于java - 等待 clojure 中的按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13374126/