Eu tenho um jtable(já tenho uma tableModel) que basicamente sempre vai receber registros do banco de dados e vai ser inserido nela, ou seja, eu não tenho nada como um botão inserir e algo do tipo, simplesmente vai ficar aparecendo registros na jtable conforme registros são inseridos no banco de dados e para mostrar esse registros novos que foram inseridos no banco de dados lá na jtable é preciso de uma atualização na estrutura para adicionar as novas linhas. Eu fiz um método que limpa ela e adiciona a consulta dos registros, dando assim um aspecto de atualização, porém essa atualização esta sendo usada em um botão e esta funcionando 100%, o que eu quero é que deixe de ser através de um botão e agora seja feito através de um TIMER que de tempo em tempo faz essa atualização das linhas da tabela, assim mostrando as novas linhas e as modificações. Segue abaixo minha tabela:
Eu tentei colocar o TIMER no método que inicia o programa para que ele já começasse a rodar e fosse atualizando, porém da um erro que eu não sei arrumar, não sou muito experiente assim em java. Segue abaixo o código do timer:
int delay = 5000; // delay de 5 seg.
int interval = 5000; // intervalo de 5 seg.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
//Cada aba possui um titulo e dependendo do titulo ira fazer tal consulta.
switch (aba) {
case "Pendente":
/*Esse método usa o método que faz a consulta das ocorrências pendentes e dele pega as informações necessarias
para poder usar o método que adiciona linhas na jtable*/
consultaPendentes();
break;
case "Em Atendimento":
/*Esse método usa o método que faz a consulta das ocorrências pendentes e dele pega as informações necessarias
para poder usar o método que adiciona linhas na jtable*/
consultaEmAtendimento();
break;
default:
/*Esse método usa o método que faz a consulta das ocorrências pendentes e dele pega as informações necessarias
para poder usar o método que adiciona linhas na jtable*/
consultaAtendidas();
break;
}
//dei um print pra ver se tava funcionando
System.out.println("Teste");
}
}, delay, interval);
O erro que ta dando quando eu executo o programa:
Teste
Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
at java.util.Vector.elementAt(Vector.java:474)
Teste
at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:294)
at javax.swing.JTable$2.getMidPointAt(JTable.java:3224)
at javax.swing.JTable.adjustSizes(JTable.java:3305)
at javax.swing.JTable.setWidthsFromPreferredWidths(JTable.java:3240)
at javax.swing.JTable.doLayout(JTable.java:3128)
at java.awt.Container.validateTree(Container.java:1695)
at java.awt.Container.validateTree(Container.java:1704)
at java.awt.Container.validateTree(Container.java:1704)
at java.awt.Container.validate(Container.java:1630)
at javax.swing.RepaintManager$3.run(RepaintManager.java:711)
at javax.swing.RepaintManager$3.run(RepaintManager.java:709)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:708)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1731)
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)
CONSTRUÍDO COM SUCESSO (tempo total: 14 segundos)
Não sei o que fazer com esse erro, não sei o que ta dando errado no TIMER, vi uns posts aqui no forum parecidos dizendo que era erro na thread e tals e que o erro era porque tava procurando uma posição da array que não existe, ai tudo bem, mas eu não faço a minima ideia do porque dele ta pegando uma posição que não existe, não entendo nada de thread, vi sobre isso hoje, percebi que cada caso é uma coisa especifica, então eu não consegui arrumar meu erro vendo os outros posts.
Pessoal me da uma ajuda ai, mesmo vendo esses erros eu não sei pra onde ir, queria ajuda de alguém experiente para ver o código do timer e o erro.
