我正在使用jFormattedTextField,因为它可以轻松地格式化,而不是jTextField。我只允许数字作为输入。
案例:
我有两个jFormattedTextfield表单,让我们说它们是txtA和txtB,txtB被禁用。
当txtA为空时,始终禁用txtB。否则,当txtA不为空时,将启用txtB。
如果删除txtA中的所有输入,则应禁用txtB。
我把代码放在KeyReleased事件中。这是一段代码:
private void txtAKeyReleased(java.awt.event.KeyEvent evt) {
if(!(txtA.getText().equals(""))){
int as = txtA.getText().length();
if(as > 0){
txtB.setEnabled(true);
}
else{
txtB.setEnabled(false);
}
}
else {
txtB.setText(null);
txtB.setEnabled(false);
}
}
一目了然,它有效。但是,它并没有完美地发挥作用。
当我在txtA中键入内容时,启用了txtB。
问题1:但是,如果删除txtA中的所有输入,txtB仍然启用。
问题2:txtA应仅检测数字作为输入,然后启用txtB。但是,当我在txtA中键入字母或空格时,txtB仍然启用。
令人惊讶的是,当我在JTextField中尝试它时,它完美地工作(当txtA为空时txtB被禁用)。
我该怎么做才能解决这个问题?
答案 0 :(得分:0)
我把代码放在KeyReleased事件中。
不要使用KeyListener。
相反,您应该使用DocumentListener
。每当对文档进行更改时,它都会触发事件。阅读How to Write a Document Listener上Swing教程中的部分,了解更多信息和示例。