我使用ActionListener來更新JList,只要選擇一個項目。異常似乎殺死JList的更新
jComboBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox) e.getSource();
updateLocalFileList(cb.getSelectedItem().toString());
}
});
它正在爲UI調用此方法。
public void updateLocalFileList(String path){
DefaultListModel model = new DefaultListModel();
for (String str : LocalFileSystem.getFileListFromDirectory(path)) {
model.addElement(str);
}
getJList().setModel(model);
}
如果getFileListFromDirectory()給出了一個NullPointerException,選擇一個空的DVD驅動器的盤符時說,這似乎阻止的ActionListener按預期工作。
我不確定究竟發生了什麼,但我懷疑向模型傳遞空值會導致此問題。
任何想法?
編輯
這裏是堆棧跟蹤的要求。正如你所看到的,該方法顯然會觸發無法訪問的驅動器上的NullPointerException。我不明白爲什麼它會阻止JList更新,儘管由於其他應用程序工作正常。
java.lang.NullPointerException
at mine.View.updateLocalFileList(View.java:274)
at mine.View$1.actionPerformed(View.java:262)
at javax.swing.JComboBox.fireActionEvent(Unknown Source)
at javax.swing.JComboBox.setSelectedItem(Unknown Source)
at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
粘貼stacktrace – OscarRyz 2010-06-25 03:04:39
我知道這並不是你正在發生的事情,但是,看看這個答案,瞭解如何閱讀堆棧跟蹤(以及它在第一個地方是什麼)http://stackoverflow.com/questions/3066253/java-boxes-mask-not-working/3066299#3066299 – OscarRyz 2010-06-25 03:06:22
@Support是否應該包含鏈接? – 2010-06-25 03:06:56