Hallo,
Folgendes Szenario. In die JList "jlCast " mit dem DefaultListModel "dlm" wird der Array "coActorArray" übergeben:
Diese Liste enthält alle von einer Datenbank geholten Daten.
Über einen Action Listener werden Elemente aus der Liste aus der Datenbank entfernt, und die Liste macht automatisch ein Update, sodass bei jeder Lösch Operation die Liste auf den neusten Stand gebracht wird.
Alles funktioniert wie geplant, nur beim löschen des letzten Elements bekomme mehrere Nullpointer Exceptions (unten). Die Zeile in meinem Code, die diese Exception auslöst ist, ist folgende, im oberen Code entspricht sie Zeile 22:
jlCast.setListData(coActorArray);
Kann mir jemand weiterhelfen?
Folgendes Szenario. In die JList "jlCast " mit dem DefaultListModel "dlm" wird der Array "coActorArray" übergeben:
Code:
for(int i = 0; i<coActorArray.length; i++)
dlmModel.addElement(coActorArray[i]);
jlCast = new JList(dlmModel);
Diese Liste enthält alle von einer Datenbank geholten Daten.
Über einen Action Listener werden Elemente aus der Liste aus der Datenbank entfernt, und die Liste macht automatisch ein Update, sodass bei jeder Lösch Operation die Liste auf den neusten Stand gebracht wird.
Code:
if(e.getActionCommand().equals("Remove Cast"))
{
Actor coActor = (Actor) jlCast.getSelectedValue();
if(coActor!=null)
{
coActorManager.removeActorFromMovie(iMovieToEditID, coActor.getId());
try
{
coActorArray = coActorManager.getActorsByMovieID(iMovieToEditID);
}
catch (DBException e1)
{
e1.printStackTrace();
}
jlCast.setListData(coActorArray);
}
}
Alles funktioniert wie geplant, nur beim löschen des letzten Elements bekomme mehrere Nullpointer Exceptions (unten). Die Zeile in meinem Code, die diese Exception auslöst ist, ist folgende, im oberen Code entspricht sie Zeile 22:
jlCast.setListData(coActorArray);
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.JList$4.getSize(JList.java:1666)
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1330)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1299)
at javax.swing.plaf.basic.BasicListUI$Handler.valueChanged(BasicListUI.java:2612)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:147)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:194)
at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:388)
at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:398)
at javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(DefaultListSelectionModel.java:559)
at javax.swing.DefaultListSelectionModel.clearSelection(DefaultListSelectionModel.java:403)
at javax.swing.JList.clearSelection(JList.java:2013)
at javax.swing.JList.setModel(JList.java:1646)
at javax.swing.JList.setListData(JList.java:1664)
at pmdbproject.Controls.EditMovieWindow.actionPerformed(EditMovieWindow.java:583)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6134)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.JList$4.getSize(JList.java:1666)
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1330)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1299)
at javax.swing.plaf.basic.BasicListUI.getPreferredSize(BasicListUI.java:566)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1632)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:769)
at java.awt.Container.layout(Container.java:1398)
at java.awt.Container.doLayout(Container.java:1387)
at java.awt.Container.validateTree(Container.java:1485)
at java.awt.Container.validate(Container.java:1457)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:670)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:127)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.JList$4.getSize(JList.java:1666)
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1330)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1299)
at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:251)
at javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:227)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:763)
at javax.swing.JComponent.paint(JComponent.java:1027)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5122)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:277)
at javax.swing.RepaintManager.paint(RepaintManager.java:1217)
at javax.swing.JComponent._paintImmediately(JComponent.java:5070)
at javax.swing.JComponent.paintImmediately(JComponent.java:4880)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Kann mir jemand weiterhelfen?