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。只有当我再次点击退格后,它才会改变。我做错了什么?
答案 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);
希望这有帮助