Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么按键在java中不能正常工作_Java_Netbeans_Keypress - Fatal编程技术网

为什么按键在java中不能正常工作

为什么按键在java中不能正常工作,java,netbeans,keypress,Java,Netbeans,Keypress,我只想通过textFieldName中是否有文本来控制按钮finish的启用 然而,当我测试它时,它总是出错,因为当我输入1个字母时,setEnabled不会改变 只有输入更多才是正确的。另外,当我使用backspace或清除所有字母时,它不会将setEnabled变回false。只有当我再次单击backspace时,它才会更改。我做错了什么?尝试使用按键释放方法 private void textFieldNameKeyPressed(java.awt.event.KeyEvent evt)

我只想通过
textFieldName
中是否有文本来控制
按钮finish
的启用

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


只有输入更多才是正确的。另外,当我使用backspace或清除所有字母时,它不会将
setEnabled
变回false。只有当我再次单击backspace时,它才会更改。我做错了什么?

尝试使用按键释放方法

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);
}   

使用
按键
方法时,它会在有值或删除该值之前执行。使用
keyreased
它将在之后执行。

尝试使用
keyTyped
事件,而不是
按键
。这可能会给您带来麻烦,因为当您按键时,字段中还没有文本。这就是为什么在最后一个角色上单击backspace时也会发生动作。另外,通过设置
textFieldName.setFocusable(true),确保组件具有键盘焦点


希望这有帮助

Java和JavaScript是两个完全不同的东西。删除了不必要的标签
private void textFieldNameKeyReleased(java.awt.event.KeyEvent evt) {                                       
        // TODO add your handling code here:
    }