swing键盘事件(KeyEvent)监听器

当一个组件处于**状态时按下释放敲击键盘上的某个键时就会发生键盘事件。通过KeyListener接口实现,KeyListener接口有3个方法:

keyPressed(KeyEvent e):键盘上某个键被按下

keyReleased(KeyEvent e):键盘上某个键被按下,又释放

keyTyped(KeyEvent e):keyPressed和keyReleased两个方法的组合

本源码案例 演示上述三个方法

我们新建一个包 mainGUI 包里存放JFrame JPanel 两个控件 ,然后再主类中调用包中的类,演示实现键盘事件。

1,新建项目DemoKeyEvent ,主类demokeyevent. DemoKeyEvent

2,建包mainGUI

swing键盘事件(KeyEvent)监听器

3,新建Java类MyPanel,继承类JPanel;新建java类 MyFrame 继承类JFrame

swing键盘事件(KeyEvent)监听器

4MyPanel类代码

package mainGUI;

import javax.swing.JScrollPane;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.event.MouseEvent;

import javax.swing.JTextArea;

public class MyPanel extends JScrollPane {

    JTextArea text = new JTextArea();  //创建文本区域

    public MyPanel()

    {

        this.setFocusable(true);      

        text.setBounds(5, 5, 300, 200); //设置文本区域的大小

        text.addKeyListener( new key_hander());

        this.add(text);

    }  

    //创建响应键盘事件监听器类

    class key_hander implements KeyListener

    {

        @Override

        public void keyPressed(KeyEvent e) {

            if(e.getID()==KeyEvent.KEY_PRESSED)

            {

                int code = e.getKeyCode();

                if(code ==KeyEvent.VK_F1)

                {

                    text.append("键盘" + KeyEvent.getKeyText(e.getKeyCode()) + "键按下\n");

                }

            }              

    }

        @Override

        public void keyReleased(KeyEvent e) {

            //text.append("键盘" + KeyEvent.getKeyText(e.getKeyCode()) + "键松开\n");

    }

        @Override

        public void keyTyped(KeyEvent e) {

            //text.append("输入内容:" + e.getKeyChar() + "\n");

            if(e.getID()==KeyEvent.KEY_TYPED)

            {

                char ch=e.getKeyChar();

                text.append("输入内容:" + e.getKeyChar() + "\n");

            }

    }

    }

}

5MyFrame代码

package mainGUI;

import java.awt.AWTEvent;

import java.awt.event.AWTEventListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseAdapter;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextArea;

public class MyFrame extends JFrame{

    MyPanel root=new MyPanel();   

    public MyFrame(String title)

    { 

        super(title);

        this.setContentPane(root); //设置内容面板

        root.setLayout(null);

    }

}

6 ,DemoKeyEvent主类代码

package demokeyevent;

import javax.swing.JFrame;

import java.awt.Container;

import java.awt.FlowLayout;

import javax.swing.JButton;

import javax.swing.JLabel;

import mainGUI.MyFrame;

import mainGUI.MyPanel;

public class DemoKeyEvent {

 

    public static void main(String[] args) {

        JFrame frame = new MyFrame("Swing Demo");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setSize(500, 400);// 设置窗口的其他参数,如窗口大小

        frame.setVisible(true);// 显示窗口

    }  

}

运行项目文件

键盘按 F1

键盘按 1

键盘按 8

键盘按 8

 

swing键盘事件(KeyEvent)监听器