Я пытаюсь узнать что-то о графическом интерфейсе, используя NetBeans6.8, начиная с раздела GUI в уроке java.Событие KeyPressed
Существует простое упражнение для преобразователя Цельсия-Фаренгейта. Я хочу, чтобы у меня было два TextFields: один для Celsius и один для температуры по Фаренгейту; если пользователь вводит текстовое поле celsius, он получает результат, «напечатанный» в тексте, приведенном в Фаренгейте. и наоборот.
Итак, я надел как текстовые поля одно событие KeyTyped, вот код:
private void celsiusTextKeyTyped(java.awt.event.KeyEvent evt) {
int cels = Integer.parseInt(celsiusText.getText());
int fahr = (int)(cels * 1.8 + 32);
fahrText.setText(fahr + "");
}
private void fahrTextKeyTyped(java.awt.event.KeyEvent evt) {
int fahr = Integer.parseInt(fahrText.getText());
int cels = (int)(fahr/1.8 - 32);
celsiusText.setText(cels + "");
}
Это не работает. Если я что-то типа в текстовом поле я получил это исключение: java.lang.NumberFormatException: For input string: ""
Кода, который присоединять слушатель: [. Тем не менее, я не могу изменить его, это автогенерируемый]
celsiusText.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
celsiusTextKeyTyped(evt);
}
});
fahrText.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
fahrTextKeyTyped(evt);
}
});
Integer.parseInt() принимает строку и возвращает int ... Вы имели в виду, если она не получает «числовую строку»? – antonyt
Я настоятельно рекомендую использовать NumberFormatException вместо глобального Exception и распечатать трассировку стека. Тем не менее это не решает проблему, только скрывает его. –
@Vash, Больше не могу согласиться, просто вскочил в быстрое решение. Я отредактировал решение для соответствия;) @antonyt, "3" = 3, "63" = 63, "0" = 0, "a" = ERROR, "" = ERROR. – JonWillis