当一个组件处于激活状态时,按下、释放或敲击键盘上的某个键时就会发生键盘事件。通过KeyListener接口实现,KeyListener接口有3个方法:
keyPressed(KeyEvent e):键盘上某个键被按下
keyReleased(KeyEvent e):键盘上某个键被按下,又释放
keyTyped(KeyEvent e):keyPressed和keyReleased两个方法的组合
本源码案例 演示上述三个方法
我们新建一个包 mainGUI 包里存放JFrame JPanel 两个控件 ,然后再主类中调用包中的类,演示实现键盘事件。
1,新建项目DemoKeyEvent ,主类demokeyevent. DemoKeyEvent
2,建包mainGUI
3,新建Java类MyPanel,继承类JPanel;新建java类 MyFrame 继承类JFrame
4,MyPanel类代码
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");
}
}
}
}
5,MyFrame代码
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