package com.han;
import java.awt.Container;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SpringLayout;
/**
* 键盘事件监听(1)
* @author HAN
*
*/
public class KeyEvent_1 extends JFrame {
String string="";//储存字母
private int i=0;
private String stringfiveString="";
/**
*
*/
private static final long serialVersionUID = -6762512303624322086L;
public KeyEvent_1() {
// TODO Auto-generated constructor stub
Container container = getContentPane();
SpringLayout springLayout = new SpringLayout();
container.setLayout(springLayout);
JLabel remarqueLabel = new JLabel("");
JTextArea textArea = new JTextArea(3, 30);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(textArea);
container.add(remarqueLabel);
springLayout.putConstraint(SpringLayout.WEST, remarqueLabel, 5,
SpringLayout.WEST, container);
springLayout.putConstraint(SpringLayout.NORTH, remarqueLabel, 5,
SpringLayout.NORTH, container);
container.add(scrollPane);
springLayout.putConstraint(SpringLayout.WEST, scrollPane, 5,
SpringLayout.EAST, remarqueLabel);
springLayout.putConstraint(SpringLayout.NORTH, scrollPane, 5,
SpringLayout.NORTH, container);
springLayout.putConstraint(SpringLayout.EAST, scrollPane, -5,
SpringLayout.EAST, container);
springLayout.putConstraint(SpringLayout.SOUTH, scrollPane, -5,
SpringLayout.SOUTH, container);
textArea.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {//获取字符
if(!String.valueOf(e.getKeyChar()).matches("\\p{Alnum}")) {//匹配非字母
if(String.valueOf(e.getKeyChar()).equals("你")) {//匹配字符
System.out.print("大家");//将你变成大家
}else if(!String.valueOf(e.getKeyChar()).matches("你")){
System.out.print(e.getKeyChar());
}else {
System.out.print(e.getKeyChar());
}
}
}
@Override
public void keyPressed(KeyEvent e) {
// 写大写字母时,释放按键是不知道是否先释放的是shift还是字母按键;但是
// 可以肯定的是按按键时必须是先按的shift。
if (e.getKeyCode() == KeyEvent.VK_CONTROL ||
e.getKeyCode() == KeyEvent.VK_SHIFT ||
e.getKeyCode() == KeyEvent.VK_ALT) {
// System.out.print("测试"+e.getSource());
}
if (!(e.isControlDown() || e.isShiftDown() || e.isAltDown())) {
// System.out.print(e.getSource());
}
String keyText = KeyEvent.getKeyText(e.getKeyCode());
if (e.isActionKey()) {
// System.out.print("The action key you pressed : " + "\""
// + keyText + "");这里是显示字母输入
string+=keyText;
} else {
//控制键
if(keyText.matches("\\p{Alpha}{1}")) {
if(i==9) {
i=0;
stringfiveString="";
}
stringfiveString+= keyText;
i++;
}
int keyCode = e.getKeyCode();
switch (keyCode) {
case KeyEvent.VK_CONTROL:
System.out.println("您按了Control键");
break;
case KeyEvent.VK_SHIFT:
System.out.println("您按了Shift键");
break;
case KeyEvent.VK_ALT:
System.out.println("您按了Alt键");
break;
case KeyEvent.VK_BACK_SPACE:
stringfiveString="";
textArea.setText(null);
break;
case KeyEvent.VK_ENTER:
if(textArea.getText().trim().equals("close")) {
System.exit(2);
}
if(textArea.getText().trim().equals("CLOSE")) {
System.exit(2);
}
break;
}
}
if(stringfiveString.lastIndexOf("CLOSE")!=-1) {
System.out.println("E再见");
System.exit(2);
}else {
System.out.print(keyText);
}
}
@Override
public void keyReleased(KeyEvent e) {
// System.out.print(
// KeyEvent.getKeyText(e.getKeyCode()) + );//输出控制键
}
});
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("请在java程序输入内容");
System.out.println("输入你好自动换成大家好");
System.err.println("退出前请清空文本,再输入close并按回车键");
KeyEvent_1 frame = new KeyEvent_1();
frame.setTitle("KeyEvent Test");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(0, 0, 600, 300);
}
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-14869.html