2016-06-28 8 views
0

Ich benutze die sakila-Datenbank von MySQL, um meinen Code zu testen. Ich habe eine JTable, die ich verwende, um die Ergebnisse aus den Ansichten anzuzeigen. Einige funktionieren und andere werfen diesen Fehler:JTable throws Ausnahme im Thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException bei einigen Abfragen

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 16 >= 16 
    at java.util.Vector.elementAt(Vector.java:474) 
    at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:648) 
    at javax.swing.JTable.getValueAt(JTable.java:2717) 
    at javax.swing.JTable.prepareRenderer(JTable.java:5706) 
    at javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:683) 
    at javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:580) 
    at javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:364) 
    at javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:275) 
    at javax.swing.JComponent.paintComponent(JComponent.java:780) 
    at javax.swing.JComponent.paint(JComponent.java:1056) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JViewport.paint(JViewport.java:728) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:586) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:586) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:586) 
    at javax.swing.JComponent.paintChildren(JComponent.java:889) 
    at javax.swing.JComponent.paint(JComponent.java:1065) 
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) 
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) 
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) 
    at javax.swing.RepaintManager.paint(RepaintManager.java:1272) 
    at javax.swing.JComponent._paintImmediately(JComponent.java:5158) 
    at javax.swing.JComponent.paintImmediately(JComponent.java:4969) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:831) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:814) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) 
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) 
    at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) 
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

Der Code, den ich um das Modell zu bauen bin mit ist:

private void insertViewData(DataSet dataSet) { 

    //testUpdateJTable2(); 

    SwingUtilities.invokeLater(new Runnable() { 

     @Override 
     public void run() { 
      Object[] headers = null; 
      Object[][] data = null; 
      try { 
       List<String> tmp = dataSet.getColumnNames(); 
       headers = (String[]) tmp.toArray(new String[tmp.size()]); 
       data = dataSet.toArray(); 
       DefaultTableModel model = new DefaultTableModel(data, headers) { 

        @Override 
        public boolean isCellEditable(int row, int column) { 
         return false; //To change body of generated methods, choose Tools | Templates. 
        } 

       }; 
       tblData.setModel(model); 
      } catch (Exception e) { 
       String messageString = e.getMessage(); 
      } 

      tblData.invalidate(); 
      tblData.revalidate(); 
      tblData.repaint(); 
     } 
    }); 

} 

Ein Beispiel für die Daten von einem der Abfragen zurückgegeben, die den Fehler hat, ist :

"Woodridge,Australia", "Jon Stephens", 33726.77 
"Lethbridge,Canada", "Mike Hillyer", 33679.7 
+0

Keine Ausnahme wird abgefangen. – user3847280

+0

Was zeigt der Debugger? – trashgod

+0

Nur die Ausnahme über – user3847280

Antwort

0

Es endete, dass eine andere Stelle in meinem Code, ich dachte nicht mehr da war eine Reihe Sortierer einstellte. Also habe ich Code hinzugefügt, um die Sortierung zu entfernen.

+0

Wie hast du das gemacht? – humphrey

Verwandte Themen