Problema na hora de listar na tabela

9 respostas
J

Ola galera, por favor vcs podem me ajudar nessa...
Não estou conseguindo listar na tabela, preciso muito dessa ajuda, obrigado
Segue abaixo os códigos

Minha Tabela Modelo
public class MinhaTableModel extends AbstractTableModel {

    private String[] tituloColunas;
    private Object[][] data;
    private int linhas, colunas;

    public MinhaTableModel(String[] tituloColunas, int numLinhas, int numColunas) {
        this.tituloColunas = tituloColunas;
        this.data = new Object[numLinhas][numColunas];
        linhas = numLinhas;
        colunas = numColunas;
    }

    public String getColumnName(int col) {
        return tituloColunas[col];
    }

    @Override
    public int getRowCount() {
        return linhas;
    }

    @Override
    public int getColumnCount() {
        return colunas;
    }

    @Override
    public Object getValueAt(int linha, int coluna) {
        return data[linha][coluna];
    }

    public void setValueAt(Object valor, int linha, int coluna) {
        data[linha][coluna] = valor.toString();
        fireTableCellUpdated(linha, coluna);
    }
}

Agora meu método de listar

List<Funcionario> lista = new ArrayList<Funcionario>();
    int i = 0;

public void Listar() {

        Session s = HibernateUtil.getSessionFactory().getCurrentSession();



        JScrollPane jsp = new JScrollPane();

        i = 0;

        //   String aux = jTAluno.getText();
        s.beginTransaction();

        StringBuilder hql = new StringBuilder();
        hql.append("from Funcionario");

        org.hibernate.Query q = s.createQuery(hql.toString());

        lista = q.list();

        for (Funcionario f : lista) {
            //  JOptionPane.showMessageDialog(null, "Nome: " + a.getNome() + "\n " + "CPF: " + a.getCpfAluno());
            jTable.setValueAt(f.getNome(), i, 0);
            jTable.setValueAt(f.getIdFuncionario(), i, i);

            jTable.setValueAt(f.getCpfFuncionario(), i, 1);
            jTable.setValueAt(f.getEmail(), i, 2);


            i++;
        }

        i = 0;
        //jsp.setViewportView(jTable);


        jsp.setAutoscrolls(true);
        jTable.setAutoCreateRowSorter(true);

    }

Ai esta dando esse erro
INFO: Not binding factory to JNDI, no JNDI name configured
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
at MinhaTableModel.setValueAt(MinhaTableModel.java:45)
at javax.swing.JTable.setValueAt(JTable.java:2710)
at PesqFuncionario.Listar(PesqFuncionario.java:58)
at PesqFuncionario.jBPesquisarActionPerformed(PesqFuncionario.java:447)
at PesqFuncionario.access$500(PesqFuncionario.java:24)
at PesqFuncionario$6.actionPerformed(PesqFuncionario.java:207)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
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)

9 Respostas

drsmachado

Em algum lugar você chama a posição 0 de um array sem elementos.

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0

Este algum lugar é neste lugar

at MinhaTableModel.setValueAt(MinhaTableModel.java:45)

J

Esse é o lugar onde disse que não esta passando parâmetro. Mas ainda não consegui achar o erro não :confused:

public void setValueAt(Object valor, int linha, int coluna) {   
        data[linha][coluna] = valor.toString();   
        fireTableCellUpdated(linha, coluna);   
    }   
}
drsmachado

Posta as linhas 43 a 48 da classe MinhaTableModel

J

Segue abaixo o código

@Override   
    public Object getValueAt(int linha, int coluna) {   
        return data[linha][coluna];   
    }   
  
    public void setValueAt(Object valor, int linha, int coluna) {   
        data[linha][coluna] = valor.toString();   
        fireTableCellUpdated(linha, coluna);   
    }
drsmachado

O objeto data[][] está nulo.

J

Hum, vou da uma olhada aki. Vlw

drsmachado

Corrigindo, não está nulo, mas, não tem dados em nenhuma posição.

J

Mas no código abaixo eu estou inserindo no array

for (Funcionario f : lista) {   
            jTable.setValueAt(f.getNome(), i, 0);   
            jTable.setValueAt(f.getIdFuncionario(), i, 1);   
            jTable.setValueAt(f.getCpfFuncionario(), i, 2);   
            jTable.setValueAt(f.getEmail(), i, 3);   
  
  
            i++;   
        }
drsmachado

Bom, as minhas TableModel eu prefiro usar Lists. É mais maleável e menos problemática que um array de 2 dimensóes.

Criado 19 de junho de 2012
Ultima resposta 20 de jun. de 2012
Respostas 9
Participantes 2