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写的)

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