在看黑馬的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寫的)