swing - Clojure 的跷跷板 : How do I recognize that enter has been pressed

标签 swing clojure seesaw

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/

相关文章:

swing - 我应该将 Java 用于为 clojure 应用程序设计的自定义 Swing 组件吗?

java 将 Styleddocument 分成两部分

csv - 如何从 compojure API 流式传输大型 CSV 响应,以便整个响应不会立即保存在内存中?

emacs - 在 Emacs 中包装(填充)一长串字符串(clojure 模式)

clojure - 你能给我一些 -> 宏的现实例子吗?

clojure - 带 Seesaw 的列表框的值

java - 检查 JToggleButton 是否被按下并禁用它

java - 防止 TableCellEditor 显示类的描述符

java - 带有 Java 7 的 Mac OSX 上的透明 JFrame/JWindow