java如何在JTextfield中正确实现SHIFT+退格键笔划
所以我有一个基本的swing应用程序,它包含一个JTextfield
,我向它添加了以下KeyListener
:
public class PromptKeyListener implements KeyListener {
private boolean SHIFT_PRESSED;
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
//Do Thing A
} else if (e.getKeyCode() == KeyEvent.VK_SHIFT) {
this.SHIFT_PRESSED = true;
}
if (SHIFT_PRESSED
&& e.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
//Do Thing B
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SHIFT) {
this.SHIFT_PRESSED = false;
}
System.out.println(SHIFT_PRESSED);
}
@Override
public void keyTyped(KeyEvent e) {
}
}
问题是,当我按住SHIFT键和Backspace键时,确实会出现Backspace键,但Backspace键也会像通常一样从文本框中删除单个字符
当按住SHIFT键时,是否有方法防止Backspace从文本框中删除字符
# 1 楼答案
见Stopping default behavior of events in Swing
答案是你应该可以打电话
防止文本进入字段的默认行为
# 2 楼答案
虽然解决方案有效,但您采取了错误的方法(IMHO)
您应该利用KeyBindingsAPI
此外,您不应该使用
KeyListener
来捕获enter
键,您应该使用ActionListener