kotlin使用java的KeyEvent類

在看黑馬的kotlin的視頻,然後有一個坦克大戰的視頻教程,不過人家是封裝好的jar,通過gradle導入寫好的基類什麼的,
想自己寫試試…尷尬的是 不會用java的鍵盤事件——————然後在網上搜了下java的KeyEvent事件
看着人家寫的代碼然後 跟着敲了一遍(人家是java 我是變成kotlin的寫)
其實很簡單 沒什麼難度
以下爲複製的 原文博客
按鍵事件可以利用鍵盤來控制和執行一些動作,或者從鍵盤上獲取輸入,只要按下,釋放一個鍵或者在一個組件上敲擊,就會觸發按鍵事件。KeyEvent對象描述事件的特性(按下,放開,或者敲擊一個鍵)和對應的值。java提供KeyListener接口處理按鍵事件。

 當按下一個鍵時會調用KeyPressed處理器,當鬆開一個鍵時會調用KeyReleased處理器,當輸入一個統一編碼時會調用KeyTyped處理器。如果這個鍵不是統一碼(如功能鍵,修改鍵,動作鍵和控制鍵)
 每個按鍵事件有一個相關的按鍵字符和按鍵代碼,分別由KeyEvent中的getKeyChar()和getKeyCode()方法返回

 getKeyChar():  char           返回這個事件中和鍵相關的字符
 getKeyCode():  int             返回這個事件中和鍵相關的整數鍵

keyPressed(e: KeyEvent) 在源組件上按下一個鍵後被調用
KeyReleased(e: KeyEvent) 在源組件上釋放一個鍵後被調用
KeyTyped(e: KeyEvent) 在源組件上按下一個鍵然後釋放該鍵後被調用

按鍵常量

VK_HOME Home鍵 VK_CONTROL 控制鍵
VK_END End鍵 VK_SHIFT shift鍵
VK_PGUP page up鍵 VK_BACK_SPACE 退格鍵
VK_PGDN page down鍵 VK_CAPS_LOCK 大小寫鎖定鍵
VK_UP 上箭頭 VK_NUM_LOCK 小鍵盤鎖定鍵
VK_DOWN 下箭頭 VK_ENTER 回車鍵
VK_LEFT 左箭頭 VK_UNDEFINED 未知鍵
VK_RIGHT 右箭頭 VK_F1–VK_F12 F1 – F12
VK_ESCAPE Esc鍵 VK_0 --VK_9 0 — 9
VK_TAB Tab鍵 VK_A --VK_Z A----Z

getKeyCode()返回定義在表中的值
getKeyChar()返回輸入的字符

然後就是 敲代碼咯,下面是代碼:

import java.awt.BorderLayout
import java.awt.TextArea
import java.awt.event.KeyEvent
import java.awt.event.KeyListener
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.JScrollPane

class KeyMain : JFrame() {
    init {
        setBounds(400,400,400,400)
        title="鍵盤事件"
        defaultCloseOperation= EXIT_ON_CLOSE
        val label=JLabel()
        label.text="測試測試"
        contentPane.add(label,BorderLayout.WEST)
        val scrollPane=JScrollPane()
        contentPane.add(scrollPane,BorderLayout.CENTER)
        var textArea=TextArea()
        textArea.addKeyListener(object :KeyListener{
            override fun keyTyped(e: KeyEvent?) {
                println("輸入的值是:${e!!.keyChar}")
            }

            override fun keyPressed(e: KeyEvent?) {
                    var keyText=KeyEvent.getKeyText(e!!.keyCode)//獲得編碼然後再按照編碼格式還原文本
                if(e.isActionKey){
                    println("按下的鍵是:${keyText}")
                }else{
                    println("按下的鍵是:${keyText}")
                    var keyCode=e.keyCode
                    when(keyCode){
                        KeyEvent.VK_CONTROL-> println(",CTRL鍵被按下")
                        KeyEvent.VK_ALT-> println(",ALT鍵被按下")
                        KeyEvent.VK_SHIFT-> println(",SHITF鍵被按下")
                    }
                    println()
                }
            }

            override fun keyReleased(e: KeyEvent?) {
                var keyText=KeyEvent.getKeyText(e!!.keyCode)
                println("你釋放的是:${keyText}")
                println()
            }

        })
        scrollPane.setViewportView(textArea)
    }

}


fun main(args: Array<String>) {
    var test=KeyMain()
    test.isVisible=true
}

記錄學習帶的東西
原代碼博客
下一篇:學習JFrame (java)可視化開發(當然 是用kotlin寫的)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章