我正在使用以下代码验证JTextFields Text1和Text2中的文本。
private void Text1KeyPressed(java.awt.event.KeyEvent evt) {
Text1.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent EVT) {
if(EVT.getKeyCode() == EVT.VK_TAB){
String value = Text1.getText();
int l = value.length();
if (EVT.getKeyChar() >= '0' && EVT.getKeyChar() <= '9') {
Text1.setEditable(true);
} else {
Text1.setEditable(true);
Text2.setEditable(false);
label.setText("* Enter only numeric digits(0-9)");
}
}
}
});
当我尝试在Text1中输入错误值后输入新的正确值时,Text2仍然是不可编辑的。我错过了什么吗?
答案 0 :(得分:3)
您永远不会再次Text2
可编辑。在某个地方你应该有这条线:
Text2.setEditable(true);
答案 1 :(得分:3)
因为当您输入错误值然后验证它时,您禁用Text2字段,然后您不再在代码中启用它...
我不知道你想从你的问题中实现什么,但也许在这里添加可编辑的Text2就足够了:
if (EVT.getKeyChar() >= '0' && EVT.getKeyChar() <= '9') {
Text1.setEditable(true);
Text2.setEditable(true);
}
答案 2 :(得分:3)
更好的方法是使用Number Formatter实现JFormattedTextField,允许输入小数点分隔符,负号和0-9范围内的数字,
在TextComponents中进行聆听更改DocumentListener
示例here