vamos ver se consigo me expressar hehehe
tenho um metodo que atualiza a minha tabela com os dados do banco, funcionando perfeitamente. segue o codigo abaixo
public void atualizarTabela(){
try{
//tira a seleção da linha
jTable1.getSelectionModel().clearSelection();
//limpa todas as linhas da tabela
((DefaultTableModel) jTable1.getModel()).setNumRows(0);
jTable1.updateUI();
//faz uma conexão, faz uma consulta e guarda no resultSet
Conexao.conectar();
ObjetosClassesExames objetosClasseExames = new ObjetosClassesExames();
ResultSet resultSet = objetosClasseExames.getConsultar();
DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
//remove todos os objetos da lista classesExames
classesExames.removeAll(classesExames);
while(resultSet.next()){
//colocando dados na tabela
modelo.addRow(new String[] {Integer.toString(resultSet.getInt("cod")),resultSet.getString("referencia"),resultSet.getString("descricao")});
//colocando dados nona lista de objetos classesExames
ObjetosClassesExames classeExame = new ObjetosClassesExames();
classeExame.setCod(resultSet.getInt("cod"));
classeExame.setRef(resultSet.getString("referencia"));
classeExame.setUsuario(resultSet.getString("operadora"));
classeExame.setData(resultSet.getString("dat"));
classeExame.setDescricao(resultSet.getString("descricao"));
classesExames.add(classeExame);
}
}catch(SQLException e){
//se ocorrer erro faz algo
}
}
meu codigo é sem os comentarios, coloquei pra voce entende a logica.
ae coloquei o que o vini passou no metodo contrutor da classe, segue codigo abaixo:
public JIClassesDeExames() {
initComponents();
//metodo passado neste topico
jTable1.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
@Override public void valueChanged(ListSelectionEvent e) {
// Processamento para mudança na linha selecionada
int cont = 0;
while(cont<classesExames.size()){
codTabela = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 0);
codObjetos = Integer.toString(classesExames.get(cont).getCod());
if(codTabela.equals(codObjetos)){
jTData.setText(classesExames.get(cont).getData());
jTDescricao.setText(classesExames.get(cont).getDescricao());
jTUsuario.setText(classesExames.get(cont).getUsuario());
jTRef.setText(classesExames.get(cont).getRef());
}
cont++;
}
}});
Apos colocar isto no metodo contrutor ele executa isso perfeitamente, mas ae quando vou usar o metodo atualizarTabela novamente ocorre erro na primeira linha.
veja a linha
jTable1.getSelectionModel().clearSelection();
e o erro eh o seguinte:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.elementData(Vector.java:730)
at java.util.Vector.elementAt(Vector.java:473)
at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:649)
at javax.swing.JTable.getValueAt(JTable.java:2720)
at jinternalframe.cadastros.JIClassesDeExames$1.valueChanged(JIClassesDeExames.java:95)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211)
at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405)
at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415)
at javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(DefaultListSelectionModel.java:576)
at javax.swing.DefaultListSelectionModel.clearSelection(DefaultListSelectionModel.java:420)
at jinternalframe.cadastros.JIClassesDeExames.atualizarTabela(JIClassesDeExames.java:42)
at jinternalframe.cadastros.JIClassesDeExames.botaoAtualizarTabela(JIClassesDeExames.java:113)
at jinternalframe.cadastros.JIClassesDeExames.jBAtualizarTabelaActionPerformed(JIClassesDeExames.java:579)
at jinternalframe.cadastros.JIClassesDeExames.access$700(JIClassesDeExames.java:26)
at jinternalframe.cadastros.JIClassesDeExames$5.actionPerformed(JIClassesDeExames.java:321)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
espero que tenha explicado bem hehehe
a unica possibilidade que me passa eh que nao deve ser colocado no metodo construor e sim em outro lugar, mas qual?
ou eh no construtor mesmo, sei la…