2013-04-01 3 views
0

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

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

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

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

Есть ли способ «щелкнуть» текстовое поле?

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

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!"); 
    } 

ответ

0

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

старый код

ageTF.setText(st.nextToken()); 

ageTF.setValue(Integer.valueOf(st.nextToken())); 
Смежные вопросы