У меня есть 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;
}
}
EDIT: Ниже то, что я в конечном итоге, используя в качестве раствора. Сначала я попробовал это, но, похоже, он не работал. Я обнаружил, что ошибка была в тестировании. Я попытался изменить текстовое поле на недопустимое значение сразу после запуска gui, но он заполнил поле. Тем не менее, текстовое поле было сосредоточено, как только gui начал, так что исходное значение было нулевым, я думаю. Последующие изменения вели себя как и ожидалось.
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;
}
}