Pue*_*Pop 3 swing clojure seesaw
http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html#getKeyCode()
我不知道如何测试按下的键是否为Enter.使用以下锅炉板和(alert ...)
.我已经设法确定事件e是一个KeyEvent,从它的文档我看到有一个常量VK_Enter
来表示Enter和三个方法getKeyChar,getKeyCode和getKeyText.使用(alert e)
它似乎getKeyChar返回Enter,或者至少用Enter String表示的东西,但(= (.getKeyChar e) "Enter")
返回false.如何检测Enter被按下?
(-> (frame :title "Zangalon" :content
(text :text "Input Goes here"
:listen [:key-typed (fn [e] ..)]))
pack!
show!)
Run Code Online (Sandbox Code Playgroud)
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!))
Run Code Online (Sandbox Code Playgroud)
和输出:
\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!"
Run Code Online (Sandbox Code Playgroud)
活动本身是:
#<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] ...>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
678 次 |
最近记录: |