当前位置: 代码迷 >> 综合 >> JavaGUI 09 窗口监听键盘监听
  详细解决方案

JavaGUI 09 窗口监听键盘监听

热度:67   发布时间:2023-11-24 14:01:37.0

4.2 窗口监听&&键盘监听


4.2.1 窗口监听

package com.muquanyu.lesson03;import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;public class TestWindow {
    public static void main(String[] args) {
    WindowFrame w = new WindowFrame();}
}class WindowFrame extends Frame{
    public WindowFrame(){
    setVisible(true);addWindowListener(new WindowListener() {
    @Overridepublic void windowOpened(WindowEvent e) {
    System.out.println("窗口已打开");}@Overridepublic void windowClosing(WindowEvent e) {
    System.out.println("窗口已关闭");this.windowClosed(e);}@Overridepublic void windowClosed(WindowEvent e) {
    System.out.println("当窗口被关闭的时候,做一些事");}@Overridepublic void windowIconified(WindowEvent e) {
    System.out.println("窗口图标化,就是托盘图标,最小化了就属于图标化了");}@Overridepublic void windowDeiconified(WindowEvent e) {
    System.out.println("取消最小化");}@Overridepublic void windowActivated(WindowEvent e) {
    System.out.println("窗口再次获取焦点");}@Overridepublic void windowDeactivated(WindowEvent e) {
    System.out.println("窗口失去焦点");}});}class MyWindowListenter extends WindowAdapter {
    @Overridepublic void windowClosing(WindowEvent e) {
    super.windowClosing(e);System.exit(0);//正常退出System.exit(1);//非正常退出setVisible(false);//隐藏窗口,通过按钮}}}

TM ~ 的 没啥好说的,就是 看你单词会多少。这东西都能看懂。在源码里呢,自己看吧。

public void windowClosed(WindowEvent e) 一般不会被调用,而是调用 Closing。
在这里插入图片描述在这里插入图片描述


4.2.2 键盘监听

键盘监听事件极其的少,就三个!哈哈 ~ ~

package com.muquanyu.lesson03;import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;public class TestKeyLisener {
    public static void main(String[] args) {
    KeyFrame k = new KeyFrame();}
}class KeyFrame extends Frame{
    public KeyFrame(){
    setBounds(1,2,300,400);setVisible(true);this.addKeyListener(new KeyListener() {
    @Override//键入一个键位,意思是指 一直按着一个键位 不放手的 触发事件。//可能会 不识别 一些 功能键!public void keyTyped(KeyEvent e) {
    System.out.println("你正在一直按着:" + e.getKeyChar());}@Overridepublic void keyPressed(KeyEvent e) {
    //键盘按下 触发的事件//那我们肯定要获取 是哪个 键位//e.getKeyCode();//获取的这个码 是 整数的ASCII码int keyCode = e.getKeyCode();if(keyCode == KeyEvent.VK_UP){
    System.out.println("你按下了上键");}}@Overridepublic void keyReleased(KeyEvent e) {
    System.out.println("松开了。");}});}
}

getKeyCode() 获取当前按下的 键位值,返回的是 一个 十进制的整数ASCII码。
KeyEvent.VK_UP 是一个 十六进制的整数常量,意思是 上方向键的 十六进制 ASCII 码。
两者 进行对比,如果 我按下了 上方向键,那么它就会提示我按下了。
keyReleased() 事件,是 松开某键位 的事件。
keyTyped() 检测键入的 键位,就是指一直按着的 键!但是它不会检测 功能键,功能键按下后,是不会被触发的!

其实我们用 getKeyChar() 是直接可以获取 你按下的键位 名称的,也就是字符。我们可以根据字符来进行对比。只不过 有时候,你输入的 对比字符,可能不对。所以保险起见,采用 getKeyCode()。
在这里插入图片描述
在这里插入图片描述