【发布时间】:2015-06-06 06:51:56
【问题描述】:
我正在使用 Netbeans 的 bean 表单来创建我的 GUI。
我已经向 JTextArea 添加了一个 keyTyped 事件,我想检测键入的键是否是 Backspace。
我出于其他原因使用 keyTyped 事件,所以我不能只使用 keyPressed 事件。
这是生成的代码(以及我的 if 检查):
private void langArea1KeyTyped(java.awt.event.KeyEvent evt) {
if(evt.getChar()== backspace) //how can I make this check?
}
evt.getKeyCode() 始终返回 0,与键入的键无关。evt.getKeyChar() 只是删除打印时打印的最后一个字符,因此我无法使用 System.out.print(evt.getKeyChar()) 检测其值并进行检查。
如何检测键入的键是否为 Backspace(或 Delete)?
【问题讨论】:
-
您需要使用 keyDown 或 keyUp 来确定是否按下了退格键而不是 keyPressed 事件。
public void keyReleased(KeyEvent evt) { if (evt.getKeyCode() == KeyEvent.VK_BACK_SPACE) { // Do stuff... } } -
@Mr.Polywhirl 我没有使用 keyPressed。我正在使用keyTyped。每当键入而不是按下键时,我都需要它触发。
-
keyTyped将不起作用,请参阅此问题:stackoverflow.com/a/14714992/1762224 -
使用键绑定而不是键监听器。真正的问题是,您要实现什么目标?
-
@WVrock “我正在尝试制作一个可以读取书面单词并立即搜索它的字典”
DocumentListener将是一个更好的选择(恕我直言)。这会在文档以某种方式更改时通知您,这将允许您根据更改类型决定要做什么。 How to write a document listener。 “如果这些也不会通知 keyBindings,那么使用它就没有意义了” - 这是我的问题的重点;)
标签: java netbeans keyboard-events backspace