http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html#getKeyCode()
我不知道如何测试按下的键是否为 Enter。使用以下样板和 (alert ...)
.我已经设法确定事件 e 是一个 KeyEvent 并且来自它的 documentation我看到有一个常数 VK_Enter
表示 Enter 和三种方法 getKeyChar , 获取 key 代码 和 getKeyText .使用 (alert e)
看起来 getKeyChar 返回 Enter,或者至少是用 Enter 字符串表示的东西,但是 (= (.getKeyChar e) "Enter")
返回假。如何检测是否按下了 Enter 键?
(-> (frame :title "Zangalon" :content
(text :text "Input Goes here"
:listen [:key-typed (fn [e] ..)]))
pack!
show!)
VK_Enter
最佳答案
一个工作示例:
(ns user
(:require [seesaw.core :as ui]))
(defn keypress [e]
(let [k (.getKeyChar e)]
(prn k (type k))
(if (= k \newline)
(prn "ENTER!")
(prn "some other key"))))
(defn run []
(-> (ui/frame :title "Zangalon" :content
(ui/text :text "Input Goes here"
:listen [:key-typed keypress]))
ui/pack!
ui/show!))
和输出:
\q java.lang.Character
"some other key"
\w java.lang.Character
"some other key"
\e java.lang.Character
"some other key"
\newline java.lang.Character
"ENTER!"
\newline java.lang.Character
"ENTER!"
事件本身是:
#<KeyEvent java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=Enter,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=10,scancode=0,extendedKeyCode=0x0] ...>
如您所见,keyCode 为 0,因此 .getKeyCode 将不起作用。
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
关于swing - Clojure 的跷跷板 : How do I recognize that enter has been pressed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20622202/