java - 等待 clojure 中的按键

标签 java input clojure lisp seesaw

我用跷跷板创建了一个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/

相关文章:

java - sun.awt.X11FontManager : java. lang.reflect.InitationTargetException (Arch Linux)

java - 从参数化构造函数调用高级构造函数的好风格?

java - 二元运算符 '||' 的错误操作数类型是什么?

javascript - 识别扫描仪设备输入或手动输入的问题

css - 重点输入的省略号

java - 无法将字符串解析为 float (java)

java - 将 Clojure 的 PersistentArrayMap 强制转换为 Java 的 Map<String, String>

java - 链表中的反转方法

macros - 如何编写宏自动解析符号

Clojure、defn、defn-、公共(public)/私有(private)、默认值