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()。