Fazendo um refactoring aqui, caí nesse código que importa de um arquivo .csv salva no BD e exibe numa JTable os dados:
[code]
try { f = new File(fileName2);
final ImportProgress p = new ImportProgress();
p.setVisible(true);
SwingWorker<?, ?> worker = new SwingWorker<Object, Object>(){
@Override
protected Object doInBackground() throws Exception {
DBImport.importNTC(f,Conexao.getConnection());// meu processo demorado
String sql =“SELECT * FROM NTC_MANUTENCAO ORDER BY LOCLZ_CLASS”;//meu select para exibição
try{
tabela.setQuery(sql);
tfTotReg.setText( “” + DBUtils.contaRegistroNTC(Conexao.getConnection())) ;
for(int c=0; c<jTable.getColumnCount(); c++) {
packColumn(jTable, c, 2);
}
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Falha na importação!","A Importação de dados falhou!",JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
return null;
}
@Override
protected void done() {
p.setVisible(false);
}
};
worker.execute();
}catch (Exception fileNotFoundException){
JOptionPane.showMessageDialog(null, “Erro ao Ler o Arquivo de Dados!”,“Mensagem de Erro”, JOptionPane.INFORMATION_MESSAGE);
return ;
}[/code]
Ele ás vezes manda uma stack:
Exception in thread “AWT-EventQueue-0” java.util.NoSuchElementException: Vector Enumeration
at java.util.Vector$1.nextElement(Vector.java:305)
at javax.swing.plaf.basic.BasicTableUI.getPreferredSize(BasicTableUI.java:1684)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1634)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:769)
at java.awt.Container.layout(Container.java:1421)
at java.awt.Container.doLayout(Container.java:1410)
at java.awt.Container.validateTree(Container.java:1507)
at java.awt.Container.validate(Container.java:1480)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:669)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:124)
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)
Mas o curioso é: isso só ocorre com um arquivo pequeno(nem 1MB, 3000 linhas, 20 colunas).Num arquvo com 50000 linhas e mais de 20MB(53 colunas), não trava. :!: >