//en为JTextField的实例对象
en.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
char ch = e.getKeyChar();
if (!Character.isLowerCase(ch)) { //判断不是小写
if (ch == KeyEvent.VK_ENTER) { //判断是回车
sure.doClick(); // sure是我自己写的按钮,用来确认向服务器发送文本框文本
} else if (ch != KeyEvent.VK_BACK_SPACE && ch != KeyEvent.VK_DELETE) {
if (Character.isUpperCase(ch)) { //判断是大写,如果单词本身含有大写应去除或改进(特殊情况如 “I pron.我”)
int caretPosition = en.getCaretPosition(); // 保存当前光标位置
String text = en.getText();
en.setText(text.substring(0, caretPosition) + Character.toLowerCase(ch)
+ text.substring(caretPosition));
en.setCaretPosition(caretPosition + 1); // 恢复光标位置
e.consume();
} else if (ch != KeyEvent.VK_MINUS) {
if (ch == '\'' || ch == '‘' || ch == '’' || ch == '`') { // 判断是 ‘、’、'、`
int caretPosition = en.getCaretPosition(); // 保存当前光标位置
String text = en.getText();
en.setText(text.substring(0, caretPosition) + "'"
+ text.substring(caretPosition));
en.setCaretPosition(caretPosition + 1); // 恢复光标位置
}
e.consume();
}
}
}
}
});
更新
//en为JTextField的实例对象
en.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
char ch = e.getKeyChar();
if (!Character.isLowerCase(ch)) { //判断不是小写
if (ch == KeyEvent.VK_ENTER) { //判断是回车
sure.doClick(); // sure是我自己写的按钮,用来确认向服务器发送文本框文本
} else if (ch != KeyEvent.VK_BACK_SPACE && ch != KeyEvent.VK_DELETE) {
if (Character.isUpperCase(ch)) { //判断是大写,如果单词本身含有大写应去除或改进(特殊情况如 “I pron.我”)
e.setKeyChar(Character.toLowerCase(ch));
} else if (ch != KeyEvent.VK_MINUS) {
if (ch == '\'' || ch == '‘' || ch == '’' || ch == '`') { // 判断是 ‘、’、'、`
e.setKeyChar('\'');
} else {
e.consume();
}
}
}
}
});