Я много ищу, чтобы решить эту ошибку, но ни одно решение не подходит.
Я использую Swing для создания простого интерфейса.Этот интерфейс имеет JTextField , где пользователь должен написать число, это число должно быть положительным , чтобы разрешить включение кнопки сохранения.
Я хочу, чтобы, еслипользователь вводит число> = 1, кнопка сохранения будет включена, и если пользователь вводит отрицательное число, его отключение будет продолжаться.
Я написал тест , в котором пользователь пытается ввестиотрицательное число:
@Test
public void testWhenQuantityTextBoxIsNegativeNumberThenSaveButtonShouldBeDisabled() {
window.textBox("quantityTextBox").enterText("-5");
window.button(JButtonMatcher.withText("Save")).requireDisabled();
}
И это код JTextField amountTextBox:
textQuantity = new JTextField();
KeyAdapter btnSaveEnabler = new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
btnSave.setEnabled(!(Integer.parseInt(textQuantity.getText()) < 1));
}
};
textQuantity.addKeyListener(btnSaveEnabler);
textQuantity.setEnabled(true);
textQuantity.setName("quantityTextBox");
Проблема в том, что когда я пытаюсь преобразовать отрицательное число, представленноеВ виде строки ("-5") в целочисленный тип У меня есть эта ошибка:
Исключение в потоке "AWT-EventQueue-0" java.lang.NumberFormatException: Для входной строки: "-"at java.lang.NumberFormatException.forInputString (Неизвестный источник)
Кажется, проблема в знаке "-" перед номером 5.
Я предполагаю, что проблема задается Integer.parseInt
но я не знаю как это решить.
Я пытаюсьизмените Integer.parseInt
на Double.parseDouble
, но ничего не изменилось.
РЕДАКТИРОВАТЬ: Спасибо Тому, теперь я знаю, что:
Проблема не в -5, проблема в том, что вы проверяете число при каждом нажатии клавиши, поэтому он пытается проверить - без какого-либо номера.
Поэтому я пытаюсь изменить с keyReleased()
на keyPressed()
, но теперьУ меня есть:
java.lang.NumberFormatException: для входной строки: ""
и:
java.lang.NumberFormatException:Для входной строки: "-"
Так что я пытаюсь с keyTyped()
, но все еще с той же ошибкой.
Я действительно не знаю, как ее решить.
Если что-то не понятно, пожалуйста, спросите меня и извините за мой английский.Спасибо заранее.