1.键盘事件
当我们向程序框中输入内容时,会产生键盘事件。Java中专门设立了KeyEvent类来捕获键盘事件,可通过为组件添加实现了KeyListener接口的监听器类来处理相应的键盘事件。
KeyListener接口有三种方法如下:
public interface KeyListener extends EventListener
{
public void keyTyped(KeyEvent e); //发生击键事件时被触发
public void keyPressed(KeyEvent e); //按键被按下时被触发
public void keyReleased(KeyEvent e); //按键被松开时被触发
}
KeyEvent类中常用方法如下:
方法 | 功能简介 |
getSource() | 用来获得触发此次事件的组件对象,返回值为Object类型 |
getKeyChar() | 用来获得与此事件中的键相关的字符 |
getKeyCode() | 用来获得与此事件中的键相关的整数keyCode |
getKeyText(int keyCode) | 用来获得描述keyCode的标签,如A、F1、HOME |
isActionKey() | 用来查看此事件中的键是否为动作键 |
isControlDown() | 用来查看Ctrl键在此次事件中是否被按下 |
isAltDown() | 用来查看Alt键在此次事件中是否被按下 |
isShiftDown() | 用来查看Shift键在此次事件中是否被按下 |
下面是一个处理键盘事件的实例,先后输入m,空格,M,Shift,F5
final JLable label = new JLable();
label.setText("备注:");
getContentPane().add(label , BorderLayout.WEST);
final JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane , BorderLayout.CENTER);
JTextArea textArea = new JTextArea();
textArea.addKeyListener(new KeyListener())
{
public void keyPressed(KeyEvent e) //按键按下时触发
{
String keyText = KeyEvent.getKeyText(e.getKeyCode()); //获得描述keyCode的标签
if(e.isActionKey())
System.out.println("您按下的是动作键"+keyText);
else
{
System.out.println("您按下的是非动作键"+keyText);
int keyCode = e.getKeyCode();
switch(keyCode)
{
case KeyEvent.VK_CONTROL: System.out.print("Ctrl键被按下"); break;
//判断是否按下Control键
case KeyEvent.VK_ALT: System.out.print("Alt键被按下"); break;
//判断是否按下Alt键
case KeyEvent.VK_SHIFT: System.out.print("Shift键被按下"); break;
//判断是否按下Shift键
}
System.out.println("\n");
}
}
public void keyTyped(keyEvent e) //发生击键事件时被触发
{
System.out.println("此次输入的是"+e.getKeyChar());
//获得输入的字符
}
public void keyReleased(keyEvent e) //按键被释放时被触发
{
String keyText = KeyEvent.getKeyText(e.getKeyCode());
System.out.println("您释放的是"+keyText);
System.out.println();
}
textArea.setLineWrap(true);
textArea.setRows(3);
textArea.setColumns(15);
scrollPane.setViewportView(textArea);