为什么keypress在java中无法正常工作

时间:2015-03-17 18:47:27

标签: java netbeans keypress

private void textFieldNameKeyPressed(java.awt.event.KeyEvent evt) {                                         
    // TODO add your handling code here:
    if(!textFieldName.getText().isEmpty())  
        buttonFinish.setEnabled(true);
    else 
        buttonFinish.setEnabled(false);
}   

如果buttonFinish中有文字,我只想控制textFieldName的启用状态。

然而,当我测试它总是出错,因为当我输入1个字母时,setEnabled不会改变。

只有输入更多才会正确。此外,当我使用退格键时,或清除所有字母时,它都不会将setEnabled更改为false。只有当我再次点击退格后,它才会改变。我做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试使用密钥释放方法。

private void textFieldNameKeyReleased(java.awt.event.KeyEvent evt) {                                       
        // TODO add your handling code here:
    }  

使用keyPressed方法时,它会在有值之前或删除该值之前执行。使用keyReleased它将执行AFTER。

答案 1 :(得分:0)

尝试使用keyTyped事件代替keyPressed。这可能会给你带来麻烦,因为当你按下键时,字段中还没有文字。这就是为什么当你在最后一个角色上击退退格时你也会得到动作的原因。还可以通过设置textFieldName.setFocusable(true);

确保您的组件具有键盘焦点

希望这有帮助