У меня есть InputVerifier
для 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;
}
}
РЕДАКТИРОВАТЬ: Ниже приведено то, что я в конечном итоге использовал в качестве решения.Сначала я попробовал это, но оказалось, что это не работает.Я обнаружил, что ошибка была в тестировании.Я попытался изменить текстовое поле на недопустимое значение сразу после запуска графического интерфейса, но это бы очистило поле.Тем не менее, текстовое поле фокусировалось сразу после запуска графического интерфейса, поэтому его начальное значение было нулевым, я думаю.Последующие изменения вели себя как ожидалось.
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;
}
}