我使用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