Avatar billede fastpoint Nybegynder
15. maj 2005 - 15:55 Der er 12 kommentarer og
1 løsning

Index Out Of Bounds Exeption

Vi forstår godt fejlen men ikke hvorfor den opstår!
Det er når vi kalder følgende metode.

      public void removeAll()
        {
            int slut = data.size();
            data.clear();
            fireTableRowsDeleted(0, slut);
        }

Det virker helt fint hvis ikke vi har rettet i nogen af de værdier der findes i databasen, men hvis vi retter bare lidt i en kolonne så får vi denne fejl

java.lang.ArrayIndexOutOfBoundsException: -1

    at java.util.ArrayList.get(ArrayList.java:326)

    at mypackage.ReserverVareGui$VoresModel.getValueAt(ReserverVareGui.java:432)

    at javax.swing.JTable.getValueAt(JTable.java:1771)

    at mypackage.ReserverVareGui$1.valueChanged(ReserverVareGui.java:117)

    at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:187)

    at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)

    at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:214)

    at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:546)

    at javax.swing.JTable.tableRowsDeleted(JTable.java:2971)

    at javax.swing.JTable.tableChanged(JTable.java:2874)

    at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)

    at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:245)

    at mypackage.ReserverVareGui$VoresModel.removeAll(ReserverVareGui.java:458)

    at mypackage.ReserverVareGui.jButton5_actionPerformed(ReserverVareGui.java:381)

    at mypackage.ReserverVareGui.access$6000471(ReserverVareGui.java:29)

    at mypackage.ReserverVareGui$4.actionPerformed(ReserverVareGui.java:150)

    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)

    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)

    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)

    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)

    at java.awt.Component.processMouseEvent(Component.java:5100)

    at java.awt.Component.processEvent(Component.java:4897)

    at java.awt.Container.processEvent(Container.java:1569)

    at java.awt.Component.dispatchEventImpl(Component.java:3615)

    at java.awt.Container.dispatchEventImpl(Container.java:1627)

    at java.awt.Component.dispatchEvent(Component.java)

    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java)

    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)

    at java.awt.Container.dispatchEventImpl(Container.java:1613)

    at java.awt.Window.dispatchEventImpl(Window.java)

    at java.awt.Component.dispatchEvent(Component.java)

    at java.awt.EventQueue.dispatchEvent(EventQueue.java:458)

    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)



hvorfor? hvordan kan vi lave metoden removeAll bedre?
Avatar billede fastpoint Nybegynder
15. maj 2005 - 16:01 #1
Det noget irriterende, som nye problemer opstår når man endelig har løst nogle andre:)

Vi kan selvfølgelig fange fejlen i en try catch block, men vi vil nu helst undgå den helt.
Avatar billede arne_v Ekspert
15. maj 2005 - 16:02 #2
prøv:

fireTableRowsDeleted(0, slut-1);
Avatar billede fastpoint Nybegynder
15. maj 2005 - 16:03 #3
Det resulterede i en større fejl:)

java.lang.IndexOutOfBoundsException: bitIndex < 0: -1

    at java.util.BitSet.get(BitSet.java)

    at javax.swing.DefaultListSelectionModel.clear(DefaultListSelectionModel.java:277)

    at javax.swing.DefaultListSelectionModel.setState(DefaultListSelectionModel.java:489)

    at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:544)

    at javax.swing.JTable.tableRowsDeleted(JTable.java:2971)

    at javax.swing.JTable.tableChanged(JTable.java:2874)

    at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)

    at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:245)

    at mypackage.ReserverVareGui$VoresModel.removeAll(ReserverVareGui.java:457)

    at mypackage.ReserverVareGui.jButton5_actionPerformed(ReserverVareGui.java:380)

    at mypackage.ReserverVareGui.access$6000471(ReserverVareGui.java:29)

    at mypackage.ReserverVareGui$4.actionPerformed(ReserverVareGui.java:150)

    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)

    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)

    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)

    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)

    at java.awt.Component.processMouseEvent(Component.java:5100)

    at java.awt.Component.processEvent(Component.java:4897)

    at java.awt.Container.processEvent(Container.java:1569)

    at java.awt.Component.dispatchEventImpl(Component.java:3615)

    at java.awt.Container.dispatchEventImpl(Container.java:1627)

    at java.awt.Component.dispatchEvent(Component.java)

    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java)

    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)

    at java.awt.Container.dispatchEventImpl(Container.java:1613)

    at java.awt.Window.dispatchEventImpl(Window.java)

    at java.awt.Component.dispatchEvent(Component.java)

    at java.awt.EventQueue.dispatchEvent(EventQueue.java:458)

    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

java.lang.IndexOutOfBoundsException: bitIndex < 0: -1

    at java.util.BitSet.get(BitSet.java)

    at javax.swing.DefaultListSelectionModel.clear(DefaultListSelectionModel.java:277)

    at javax.swing.DefaultListSelectionModel.setState(DefaultListSelectionModel.java:489)

    at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:544)

    at javax.swing.JTable.tableRowsDeleted(JTable.java:2971)

    at javax.swing.JTable.tableChanged(JTable.java:2874)

    at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)

    at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:245)

    at mypackage.ReserverVareGui$VoresModel.removeAll(ReserverVareGui.java:457)

    at mypackage.ReserverVareGui.jButton5_actionPerformed(ReserverVareGui.java:380)

    at mypackage.ReserverVareGui.access$6000471(ReserverVareGui.java:29)

    at mypackage.ReserverVareGui$4.actionPerformed(ReserverVareGui.java:150)

    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)

    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)

    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)

    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)

    at java.awt.Component.processMouseEvent(Component.java:5100)

    at java.awt.Component.processEvent(Component.java:4897)

    at java.awt.Container.processEvent(Container.java:1569)

    at java.awt.Component.dispatchEventImpl(Component.java:3615)

    at java.awt.Container.dispatchEventImpl(Container.java:1627)

    at java.awt.Component.dispatchEvent(Component.java)

    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java)

    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)

    at java.awt.Container.dispatchEventImpl(Container.java:1613)

    at java.awt.Window.dispatchEventImpl(Window.java)

    at java.awt.Component.dispatchEvent(Component.java)

    at java.awt.EventQueue.dispatchEvent(EventQueue.java:458)

    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

java.lang.IndexOutOfBoundsException: bitIndex < 0: -1

    at java.util.BitSet.get(BitSet.java)

    at javax.swing.DefaultListSelectionModel.clear(DefaultListSelectionModel.java:277)

    at javax.swing.DefaultListSelectionModel.setState(DefaultListSelectionModel.java:489)

    at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:544)

    at javax.swing.JTable.tableRowsDeleted(JTable.java:2971)

    at javax.swing.JTable.tableChanged(JTable.java:2874)

    at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)

    at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:245)

    at mypackage.ReserverVareGui$VoresModel.removeAll(ReserverVareGui.java:457)

    at mypackage.ReserverVareGui.jButton5_actionPerformed(ReserverVareGui.java:380)

    at mypackage.ReserverVareGui.access$6000471(ReserverVareGui.java:29)

    at mypackage.ReserverVareGui$4.actionPerformed(ReserverVareGui.java:150)

    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)

    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)

    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)

    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)

    at java.awt.Component.processMouseEvent(Component.java:5100)

    at java.awt.Component.processEvent(Component.java:4897)

    at java.awt.Container.processEvent(Container.java:1569)

    at java.awt.Component.dispatchEventImpl(Component.java:3615)

    at java.awt.Container.dispatchEventImpl(Container.java:1627)

    at java.awt.Component.dispatchEvent(Component.java)

    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java)

    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)

    at java.awt.Container.dispatchEventImpl(Container.java:1613)

    at java.awt.Window.dispatchEventImpl(Window.java)

    at java.awt.Component.dispatchEvent(Component.java)

    at java.awt.EventQueue.dispatchEvent(EventQueue.java:458)

    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
Avatar billede fastpoint Nybegynder
15. maj 2005 - 16:05 #4
fireTableRowsDeleted(-1, slut);

virker heller ikke
Avatar billede fastpoint Nybegynder
15. maj 2005 - 16:07 #5
Vi genstarter lige maskinen. Kom endelig med flere forslag vi er sikre på det er den metode der brokker sig for da vi udkommenterede den virkede det fint, men der var bare det problem, at vores arraylist ikke blev nulstillet.
Avatar billede arne_v Ekspert
15. maj 2005 - 16:09 #6
de enste 2 som giver mening må være

fireTableRowsDeleted(0, slut-1);

og

fireTableRowsDeleted(1, slut);
Avatar billede fastpoint Nybegynder
15. maj 2005 - 16:13 #7
samme fejl. Burde den overhovedet brokke sig her? Vi trækker data op fra databasen og de gemmes i vores arraylist som hedder data. Vi retter efterfølgende i en kolonnes værdi og laver en helt ny søgning hvor alt bliver hevet op fra databasen igen.

så kan vi ikke se hvorfor den laver den fejl?
Avatar billede fastpoint Nybegynder
15. maj 2005 - 16:21 #8
det er her den brokker sig

  int slut = data.size();
  data.clear();

vi fjernede den anden linje helt og det hjalp ikke
Avatar billede arne_v Ekspert
15. maj 2005 - 16:23 #9
jeg tror at du skal vente på at en TableModel guru kommer forbi - det er lidt uden
for mit område
Avatar billede fastpoint Nybegynder
15. maj 2005 - 16:25 #10
men det har ikke noget med JTable at gøre, men vores arraylist:(

vi har prøvet følgende

    for (int i = 0; i < data.size(); i++)
            {
            data.remove(i);
            }
           
men den fjerner ikke alle elementer.

så hvordan fjerner vi alle elementer i vores arraylist? så burde det løse problemet.
Avatar billede arne_v Ekspert
15. maj 2005 - 16:30 #11
.clear() fjerner alle elementer i en ArrayList

ingen problemer

hvis I kigger i stacktracen så ser I at klasserne er:

javax.swing.DefaultListSelectionModel
javax.swing.JTable
javax.swing.table.AbstractTableModel
Avatar billede fastpoint Nybegynder
15. maj 2005 - 16:30 #12
okay vi valgte at løse det med vores try catch block. Det mystiske var, at anden gang man trykkede på søg knappen så virkede det fint! Nu kalder vi derfor removeAll i catch delen så det ser ud til at fungere fint for brugeren.

try{
  tabelModel.removeAll(); 
  }catch(Exception test)
  {
    tabelModel.removeAll(); 
  }finally{

  if(jRadioButton2.isSelected())
  {
  Kontrol.sogEfterVin(jTextField13.getText()); 
  }else if(jRadioButton3.isSelected())
  {
    Kontrol.hentAlleVin();
  }else if(jRadioButton1.isSelected())
  {
    Kontrol.hentEnVin(jTextField13.getText());
  }}
  }
Avatar billede fastpoint Nybegynder
15. maj 2005 - 16:31 #13
Det er bare mystisk vi skal kalde clear to gange før det virker. Størrelsen af vores array skulle ikke have ændret sig siden sidst nemlig.

Vi retter kun nede i databasen og ikke vores application.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester