JFormattedTextField nullpointerexception

У меня есть панель, которая показывает список пациентов (ID/ имена / возраст). У меня есть список, который, когда я щелкаю пациента, связывает данные пациента с текстовыми полями на моей панели.

Проблема: Когда я пытаюсь обновить информацию о пациенте, я получаю нулевое исключение для моего возраста JFormattedTextField, ТОЛЬКО когда я не нажимаю текстовое поле возраста, прежде чем нажать кнопку обновления.

Для проверки 1. Все текстовые поля пусты 2. Я щелкаю пациента, он обновляет текстовые поля с информацией о пациенте 3. Я изменяю, скажем, идентификатор пациента на что-то другое, и нажимаю обновить -> nullpointerexception

но если я вместо этого нажму на пациента, а затем просто нажму на возраст JFTF, а затем нажму "обновить", он отлично прочитает данные.

Есть ли способ "нажать" на текстовое поле??

мой код = когда я нажимаю на список

    int patientIndex = patientList.getSelectedIndex();
    if (patientIndex == -1) {
        return;
    }
    Object info = listModel.get(patientIndex);
    String infoString = (String) info;
    StringTokenizer st = new StringTokenizer(infoString);
    idTF.setText(st.nextToken());
    if (idTF.getText().equals("Empty")) {
        idTF.setText("");
        return;
    }

    firstNameTF.setText(st.nextToken());
    lastNameTF.setText(st.nextToken());
    ageTF.setText(st.nextToken());

-

    String fName, lName, id, id2;    //  For now the ID will be name+age
    int age;
    Patient p = new Patient();
    boolean gender;

    //  attempts to read the text fields 
    try {
        fName = firstNameTF.getText();
        lName = lastNameTF.getText();
        id = idTF.getText();
        age = ((Number) ageTF.getValue()).intValue();            
        System.out.println("age = " + age);
        } catch (NullPointerException ex) {
        System.out.println(ex.getMessage());
        statusLabel.setText("All fields marked by a * are requried!");
    }

1 ответ

Я использовал неправильную функцию, чтобы добавить возраст в поле возраста. Поскольку он отформатирован, я должен использовать setValue().

старый код

ageTF.setText(st.nextToken());

ageTF.setValue(Integer.valueOf(st.nextToken()));
Другие вопросы по тегам