0

필자가 작성한 릴 응용 프로그램에서 임의의 NullPointerException이 표시됩니다. 기본적으로 숫자 목록이 표시되고 그 중 하나를 선택할 때 일부 세부 정보가 창의 다른 부분에 표시됩니다.ListSelectionListener가있는 이상한 무작위 NPE

버튼을 클릭하여 새로운 데이터 세트를 추가하면 새로운 텍스트 필드와 버튼이 데이터베이스에 표시되고 넷 데이터 세트를 포함하도록 목록이 업데이트되고 그 중 하나를 선택하는 새 창이 열립니다. .

이 위치에서 나는 매우 임의로 NPE를 얻습니다 (아래 로그 참조). 재미있는 점은 오류가 있거나 없을 때 모든 것이 올바르게 작동한다는 것입니다. 창만 닫히지 않습니다. 디버그 모드로 실행해도 결코 발생하지 않습니다. 이것은 SelectionListener입니다 http://pastebin.com/FQzp6Wqp

:

은 로그인 보려면

menu.itemList.addListSelectionListener(new ListSelectionListener() { 
    @Override 
    public void valueChanged(ListSelectionEvent e) { 
     String index = menu.itemList.getSelectedValue().toString(); //mentioned Line 63 
     TDMInvDB db = new TDMInvDB(); 
     try { 
      details.descr.setText(db.getDescr(index)); 
      details.specs.setText(db.getSpecs(index)); 
      details.historyList.setListData(db.getHistory(index)); 
      if(Integer.parseInt(index) < 0) { 
       details.add.setEnabled(false); 
       details.edit.setEnabled(false); 
      } else { 
       details.add.setEnabled(true); 
       details.edit.setEnabled(true); 
      } 
     } catch (ClassNotFoundException e1) { 
      e1.printStackTrace(); 
     } 
    } 
}); 

을 이것은 데이터베이스에 발사 버튼의 ActionListener를 : 당신에 대해 어떻게

add.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent ae) { 
     TDMInvDB db = new TDMInvDB(); 
     try { 
      db.addItem(inv.getText(), descr.getText(), specs.getText()); 
      m.itemList.setSelectedIndex(-1); 
      m.itemList.setListData(db.getItemList()); //mentioned Line 108 
      m.itemList.setSelectedValue(inv.getText(), true); 
      ai.dispose(); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 
}); 
+0

getSelectedValue()가 null을 반환하는 것처럼 보입니다. – andy256

+0

63 행에 무엇이 있는지 알려주지 않았습니다. "at de.tdm.app.Mainframe $ 1.valueChanged (Mainframe.java:63)"이것이 코드가 폭발하는 곳입니다. – Tarik

+0

@ tarik : 첫 번째 코드 블록 4 행에 있습니다. 주석을 살펴보십시오. –

답변

2

삽입

if (menu.itemList.getSelectedValue() == null) 
    return; 

String index = menu.itemList.getSelectedValue().toString(); 

다음 당신은 아무것도하고 싶지 않아 아무것도 선택이없는 경우

전에.