我有一个InputVerifier
为jTextField
检查并查看来自用户的输入是否是整数。如果不是,我想把它恢复到最后的好价值。我如何做到这一点?这里是我到目前为止的代码:恢复jTextField以保持良好的价值
class IntegerVerifier extends InputVerifier {
public boolean verify(JComponent input) {
JTextField text = (JTextField)input;
String old = text.getText();
try {
Integer.parseInt(text.getText().trim());
} catch (NumberFormatException e) {
// this does not work b/c input is not a TextField
input.setText(old);
}
return true;
}
}
编辑:下面是我最终使用的解决方案。我最初尝试过这个,但似乎没有工作。我发现错误在测试中。启动gui后,我试图将文本字段更改为无效值,但会将该字段清空。然而,gui刚开始的时候textfield就有了重点,所以我认为它的初始值是空的。后续更改的行为如预期。
class IntegerVerifier extends InputVerifier {
public boolean verify(JComponent input) {
JTextField text = (JTextField) input;
String old = text.getText();
try {
Integer.parseInt(text.getText().trim());
} catch (NumberFormatException e) {
text.setText(old);
//return false; // don't use this otherwise it won't revert the value
}
return true;
}
}