필자가 작성한 릴 응용 프로그램에서 임의의 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();
}
}
});
getSelectedValue()가 null을 반환하는 것처럼 보입니다. – andy256
63 행에 무엇이 있는지 알려주지 않았습니다. "at de.tdm.app.Mainframe $ 1.valueChanged (Mainframe.java:63)"이것이 코드가 폭발하는 곳입니다. – Tarik
@ tarik : 첫 번째 코드 블록 4 행에 있습니다. 주석을 살펴보십시오. –