Hallo,
ich hab jetzt schon ne Weile im Netz gesucht aber nichts brauchbares gefunden, darum frag ich mal hier.
Ich habe eine JTable mit DefaultTableModel:
In diese Tabelle füge ich verschiedene Artikeldaten ein, die ich aus einer Datenbank auslese:
Das Problem ist, wenn ich nur bis 2000 Artikel habe, funzt alles einwandfrei aber darüber wird immer eine Exception ausgelöst:
Auch wenn ich den TableSorter weg lasse, tritt die Exception so ähnlich auf.
Interessant ist, wenn ich den Thread mit
hinter
für 50 Millisekunden schlafen lege, werden alle 8000 Artikel ordentlich ohne Exception in die Tabelle eingefügt, allerdings dauert das dann entsprechend lange.
Was muss ich ändern, damit alle Artikel ohne Exception in meine Tabelle eingefügt werden???:L
Vielen Dank im Voraus!
ich hab jetzt schon ne Weile im Netz gesucht aber nichts brauchbares gefunden, darum frag ich mal hier.
Ich habe eine JTable mit DefaultTableModel:
Code:
//Artikel-Tabelle
artikelmodel=new DefaultTableModel(ARTTITLES,0) {
public boolean isCellEditable(int x, int y) {
return false;
}
};
.
.
.
JPanel artpanela=new JPanel();
TableSorter sorter = new TableSorter(artikelmodel);
artikeltabelle = new JTable(sorter);
artikeltabelle.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
artikeltabelle.getTableHeader().setReorderingAllowed(false);
sorter.setTableHeader(artikeltabelle.getTableHeader());
JScrollPane scroll = new JScrollPane(artikeltabelle);
scroll.setPreferredSize(new Dimension(tabellex,tabelley));
In diese Tabelle füge ich verschiedene Artikeldaten ein, die ich aus einer Datenbank auslese:
Code:
Vector tabvector;
while(datenmenge.next()) {
artikel.id = datenmenge.getInt("id");
artikel.artnr = datenmenge.getString("artnr");
artikel.artnr2 = datenmenge.getString("artnr2");
artikel.bezeichnung = datenmenge.getString("bezeichnung");
artikel.bestand = datenmenge.getInt("bestand");
artikel.lagerplatz = datenmenge.getString("lagerplatz");
artikel.bestellt = datenmenge.getInt("bestellt");
artikel.hersteller = datenmenge.getString("hersteller");
artikel.modell = datenmenge.getString("modell");
artikel.wg = datenmenge.getString("warengruppe");
artikel.ek = datenmenge.getString("ekp");
artikel.vk = datenmenge.getString("vkp");
artikel.sonstiges = datenmenge.getString("sonstiges");
tabvector=new Vector();
tabvector.add(artikel.artnr);
tabvector.add(artikel.artnr2);
tabvector.add(artikel.bezeichnung);
tabvector.add(artikel.bestand);
tabvector.add(artikel.lagerplatz);
tabvector.add(artikel.bestellt);
tabvector.add(artikel.hersteller);
tabvector.add(artikel.modell);
tabvector.add(artikel.wg);
tabvector.add(artikel.ek);
tabvector.add(artikel.vk);
tabvector.add(artikel.sonstiges);
artikelmodel.addRow(tabvector);
}
Das Problem ist, wenn ich nur bis 2000 Artikel habe, funzt alles einwandfrei aber darüber wird immer eine Exception ausgelöst:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at TableSorter.getViewToModel(TableSorter.java:174)
at TableSorter.modelIndex(TableSorter.java:185)
at TableSorter.getValueAt(TableSorter.java:222)
at javax.swing.JTable.getValueAt(JTable.java:1903)
at javax.swing.JTable.prepareRenderer(JTable.java:3911)
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2072)
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1974)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1897)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:154)
at javax.swing.JComponent.paintComponent(JComponent.java:743)
at javax.swing.JComponent.paint(JComponent.java:1006)
at javax.swing.JComponent.paintChildren(JComponent.java:843)
at javax.swing.JComponent.paint(JComponent.java:1015)
at javax.swing.JViewport.paint(JViewport.java:728)
at javax.swing.JComponent.paintChildren(JComponent.java:843)
at javax.swing.JComponent.paint(JComponent.java:1015)
at javax.swing.JComponent._paintImmediately(JComponent.java:4890)
at javax.swing.JComponent.paintImmediately(JComponent.java:4676)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:477)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:114)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Auch wenn ich den TableSorter weg lasse, tritt die Exception so ähnlich auf.
Interessant ist, wenn ich den Thread mit
Code:
Thread.sleep(50);
hinter
Code:
artikelmodel.addRow(tabvector);
für 50 Millisekunden schlafen lege, werden alle 8000 Artikel ordentlich ohne Exception in die Tabelle eingefügt, allerdings dauert das dann entsprechend lange.
Was muss ich ändern, damit alle Artikel ohne Exception in meine Tabelle eingefügt werden???:L
Vielen Dank im Voraus!