ユーザーからの入力が整数であるかどうかを確認するためのInputVerifier
for aがあります。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起動と同時にテキストフィールドにフォーカスが移ったため、初期値はnullだったと思います。その後の変更は期待どおりに動作しました。
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;
}
}