我有一個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;
}
}