Mostrar dados na Jtable com preparedStatement[RESOLVIDO]

5 respostas
zicky23

boa tarde pessoal.

segue meu metodo busca() da classe ConnUsuarios

public ArrayList<Usuarios> busca() throws SQLException {   //aqui ta dando erro pedindo um RETURN... mas nao sei como fazer.. pois ja tem um RETURN abaixo.....
       try{  
           Connect(); 
           pst = con.prepareStatement("SELECT NOME_USUARIOS,LOGIN_USUARIOS,SENHA_USUARIOS,NIVEL_DE_ACESSO FROM USUARIOS");  
           pst.execute(); 
           ResultSet rs = pst.executeQuery();
           ArrayList<Usuarios> use = new ArrayList<Usuarios>(); 
           while(rs.next()){  
                Usuarios  usuario = new Usuarios();  
                
               usuario.setNome(rs.getString("NOME_USUARIOS"));  
               System.out.println(rs.getString("NOME_USUARIOS"));
               usuario.setUsuario(rs.getString("LOGIN_USUARIOS"));  
               usuario.setSenha(rs.getString("SENHA_USUARIOS"));  
               usuario.setNivel(rs.getInt("NIVEL_DE_ACESSO"));   
                 
               use.add(usuario);  
           }  
           Fecha();
           return use;
       }catch (Exception e){  
           System.out.println("Erro" + e);  
       }  
         
   }

ou aqui abaixo onte tenho o metodo q chama o arraylist, da classe GerenciadorUsers... onde tenho um Jtable chamado Tableusers

private void Dados() throws SQLException{

            ConnUsuarios user = new ConnUsuarios();
            ArrayList<Usuarios> u = user.busca(); 
            if(u.isEmpty()){
                JOptionPane.showMessageDialog(rootPane, "Lista vazia");
            }else{
                boolean[] edicao = {false, false, false, false};//define quais colunas vao ser editaveis
                String[] colunas = new String []{"NOME","LOGIN","SENHA","NIVEL"};
                TableModel mod = new model.TableModel(u, colunas, edicao) {
                    Class[] types = new Class [] {
                        java.lang.String.class,//nome
                        java.lang.String.class,//login
                        java.lang.String.class,//senha
                        java.lang.Integer.class};//nivel
                        //java.lang.String.class};//bairro
                    @Override
                    public Class<?> getColumnClass(int column) {return types[column];}
                };
                TableUsers.setModel(mod);
                sorter = new TableRowSorter<TableModel>(mod);
                TableUsers.setRowSorter(sorter);
                TableUsers.setRowHeight(25);
                TableUsers.getColumnModel().getColumn(0).setMinWidth(200);
                TableUsers.getColumnModel().getColumn(1).setMinWidth(85);
                TableUsers.getColumnModel().getColumn(1).setMaxWidth(85);
                TableUsers.getColumnModel().getColumn(2).setMinWidth(200);
                //TableContribuinte.setFocusable(true);
            }
    }

valeu

5 Respostas

charleston10

oq vc nao ta conseguindo fazer? ql é a sua duvida? em que parte esta tendo problema?

zicky23

agora mudei umas coisas....

ta aparecendo esse erro:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: db.Usuarios cannot be cast to [Ljava.lang.Object;
	at model.TableModel.getValueAt(TableModel.java:68)

meu metodo Busca() na classe ConnUsuarios ta assim

public ArrayList<Usuarios> Busca() throws SQLException {  
       Connect(); 
       pst = con.prepareStatement("SELECT NOME_USUARIOS,LOGIN_USUARIOS,SENHA_USUARIOS,NIVEL_DE_ACESSO FROM USUARIOS"); 
       Usuarios  usuario = new Usuarios();  
       ResultSet rs = pst.executeQuery();  
    
       ArrayList<Usuarios>  contatos = new ArrayList<Usuarios>();  
       while (rs.next()) {  
               usuario.setNome(rs.getString("NOME_USUARIOS"));  
               //System.out.println(rs.getString("NOME_USUARIOS"));
               usuario.setUsuario(rs.getString("LOGIN_USUARIOS"));  
               usuario.setSenha(rs.getString("SENHA_USUARIOS"));  
               usuario.setNivel(rs.getInt("NIVEL_DE_ACESSO")); 
  
           contatos.add(usuario);  
             
    int a =0;  
    System.out.println(contatos.get(a++).getNome()); // aqui retorna cada nome gravado no banco  
       }  
       return contatos;  
   }

meu metodo para popular o jtable ta assim

private void Dados() throws SQLException{
        
        ConnUsuarios u = new ConnUsuarios();
        ArrayList<Usuarios> user = u.Busca();  

        boolean[] edicao = {false, false, false, false};//define quais colunas vao ser editaveis
        String[] colunas = new String []{"NOME","LOGIN","SENHA","NIVEL"};
        TableModel mod = new model.TableModel(user, colunas, edicao) {
            Class[] types = new Class [] {
                java.lang.String.class,//nome
                java.lang.String.class,//login
                java.lang.String.class,//senha
                java.lang.Integer.class};//nivel
            @Override
            public Class<?> getColumnClass(int column) {return types[column];}
        };     
        TableUsers.setModel(mod);
        sorter = new TableRowSorter<TableModel>(mod);
        
        for (int cont= 0, i =0; i<user.size();++i, ++cont){  
           
        user.get(i);
               //Aqui você adiciona os campos do banco de dados no jTable.  

              // o que coloco aqui para popular o jtable????????????????????

        }

ahh no meu table model ta assim a linha q ta dando o erro

public Object getValueAt(int rowIndex, int columnIndex) {
        // Obtem a linha, que é uma String []
        Object[] linha = (Object[]) getLinhas().get(rowIndex); // essa é a linha q ta dando erro
//        // Retorna o objeto que esta na coluna
        return linha[columnIndex];

    }
zicky23

Alguém para me dar uma ajuda??

zicky23
public Object getValueAt(int rowIndex, int columnIndex) {
        // Obtem a linha, que é uma String []
        Object[] linha = (Object[]) getLinhas().get(rowIndex); // nessa Linha ta dando erro!!!!!!!!!!!!!!!!!!!
        //return linhas.get(rowIndex).getClass();
//        // Retorna o objeto que esta na coluna
        return linha[columnIndex];

    }

PESSOAL esse cód q tá dando erro!!!!!!!

o erro COMPLETO é esse:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: db.Usuarios cannot be cast to [Ljava.lang.Object;
	at model.TableModel.getValueAt(TableModel.java:68)
	at javax.swing.JTable.getValueAt(JTable.java:2720)
	at javax.swing.JTable.prepareRenderer(JTable.java:5718)
	at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2114)
	at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:2016)
	at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1812)
	at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
	at javax.swing.JComponent.paintComponent(JComponent.java:778)
	at javax.swing.JComponent.paint(JComponent.java:1054)
	at javax.swing.JComponent.paintChildren(JComponent.java:887)
	at javax.swing.JComponent.paint(JComponent.java:1063)
	at javax.swing.JViewport.paint(JViewport.java:725)
	at javax.swing.JComponent.paintChildren(JComponent.java:887)
	at javax.swing.JComponent.paint(JComponent.java:1063)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
	at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
	at javax.swing.JComponent._paintImmediately(JComponent.java:5169)
	at javax.swing.JComponent.paintImmediately(JComponent.java:4980)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
	at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
	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.awt.EventQueue.dispatchEvent(EventQueue.java:675)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121)
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
	at java.awt.Dialog.show(Dialog.java:1072)
	at java.awt.Component.show(Component.java:1650)
	at java.awt.Component.setVisible(Component.java:1602)
	at java.awt.Window.setVisible(Window.java:1013)
	at java.awt.Dialog.setVisible(Dialog.java:1003)
	at grafica.JPrincipal.jMenuItem12ActionPerformed(JPrincipal.java:234)
	at grafica.JPrincipal.access$000(JPrincipal.java:14)
	at grafica.JPrincipal$1.actionPerformed(JPrincipal.java:170)
	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.AbstractButton.doClick(AbstractButton.java:376)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
	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)
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: db.Usuarios cannot be cast to [Ljava.lang.Object;
	at model.TableModel.getValueAt(TableModel.java:68)
	at javax.swing.JTable.getValueAt(JTable.java:2720)
	at javax.swing.JTable.prepareRenderer(JTable.java:5718)
	at javax.swing.JTable.getToolTipText(JTable.java:3394)
	at javax.swing.ToolTipManager$insideTimerAction.actionPerformed(ToolTipManager.java:629)
	at javax.swing.Timer.fireActionPerformed(Timer.java:312)
	at javax.swing.Timer$DoPostEvent.run(Timer.java:244)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
	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.awt.EventQueue.dispatchEvent(EventQueue.java:675)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121)
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
	at java.awt.Dialog.show(Dialog.java:1072)
	at java.awt.Component.show(Component.java:1650)
	at java.awt.Component.setVisible(Component.java:1602)
	at java.awt.Window.setVisible(Window.java:1013)
	at java.awt.Dialog.setVisible(Dialog.java:1003)
	at grafica.JPrincipal.jMenuItem12ActionPerformed(JPrincipal.java:234)
	at grafica.JPrincipal.access$000(JPrincipal.java:14)
	at grafica.JPrincipal$1.actionPerformed(JPrincipal.java:170)
	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.AbstractButton.doClick(AbstractButton.java:376)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
	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)
BUILD SUCCESSFUL (total time: 11 seconds)

alguém da uma LUZ.....

zicky23

Após mto bater cabeça pensando e pesquisando na NET e no fórum.....

consegui..!!!!

segue abaixo para qm tiver o mesmo problema!

UsersTableModel

package model;

import db.Usuarios;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author vielmond
 */
public class UsersTableModel extends AbstractTableModel {  
    private static final int COL_NOME = 0;  
    private static final int COL_LOGIN = 1;  
    private static final int COL_SENHA = 2;  
    private static final int COL_NIVEL = 3; 
    
    private String[] colunas = null;
  
    private List<Usuarios> valores;         
  
    //Esse é um construtor, que recebe a nossa lista 
    public UsersTableModel(List<Usuarios> valores, String[] colunas, boolean[] edicao) {  
          this.valores = new ArrayList<Usuarios>(valores);  
            setColunas(colunas);
            colsEdicao = edicao;
    }  
  
    public int getRowCount() {  
        //Quantas linhas tem sua tabela? Uma para cada item da lista.  
        return valores.size();  
    }  
    
//Alterar o conteúdo do modelo, tem que setar também o setValueAt
    private boolean[] colsEdicao;

    @Override
    public boolean isCellEditable(int row, int col) {
        return colsEdicao[col];
//    return false;
    }
    
    
    public String[] getColunas() {
        return colunas;
    }
    
    public void setColunas(String[] strings) {
        colunas = strings;
    }
  
    public int getColumnCount() {  
        //Quantas colunas tem a tabela? 
        return getColunas().length;
    }  
  
    @Override
    public String getColumnName(int col) {
        return colunas[col];
    } 
  
    public Object getValueAt(int row, int column) {  
        //Precisamos retornar o valor da coluna column e da linha row.  
        Usuarios titulo = valores.get(row);  
        if (column == COL_NOME) return titulo.getNome();  
        else if (column == COL_LOGIN) return titulo.getUsuario();  
        else if (column == COL_SENHA) return titulo.getSenha(); 
        else if (column == COL_NIVEL) return titulo.getNivel();
        return ""; //Nunca deve ocorrer  
    }  
  
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {  
        Usuarios titulo = valores.get(rowIndex);  
        //Vamos alterar o valor da coluna columnIndex na linha rowIndex com o valor aValue passado no parâmetro.  
        //Note que vc poderia alterar 2 campos ao invés de um só.  
        if (columnIndex== COL_NOME) titulo.setNome(aValue.toString());  
        else if (columnIndex== COL_LOGIN) titulo.setUsuario(aValue.toString());  
        else if (columnIndex== COL_SENHA) titulo.setSenha(aValue.toString()); 
        else if (columnIndex== COL_NIVEL) titulo.setNivel((Integer)aValue); 
    }  
  
    public Class<?> getColumnClass(int columnIndex) {  
        //Qual a classe das nossas colunas? Como estamos exibindo texto, é string.  
        return String.class;  
    }  
       
    //Já que esse tableModel é de livros, vamos fazer um get que retorne um livro inteiro.  
    //Isso elimina a necessidade de chamar o getValueAt() nas telas.   
    public Usuarios get(int row) {  
        return valores.get(row);  
    }  
}

metodo busca()

public ArrayList<Usuarios> Busca(){ 
        try{
            Connect(); 
            pst = con.prepareStatement("SELECT NOME_USUARIOS,LOGIN_USUARIOS,SENHA_USUARIOS,NIVEL_DE_ACESSO FROM USUARIOS"); 
            ResultSet rs = pst.executeQuery();  
            user = new ArrayList<Usuarios>();  
            while (rs.next()) {  
                Usuarios  usuario = new Usuarios();  
                usuario.setNome(rs.getString("NOME_USUARIOS"));  
                usuario.setUsuario(rs.getString("LOGIN_USUARIOS"));  
                usuario.setSenha(rs.getString("SENHA_USUARIOS"));  
                usuario.setNivel(rs.getInt("NIVEL_DE_ACESSO")); 
                user.add(usuario); 
                //int a =0;  
                //System.out.println(user.get(a++).getNome()); 
            }
            Fecha();
       }catch(SQLException e){
           JOptionPane.showMessageDialog(null, "erro");
       }
       return user;
   }

metodo que preenche a jtable

private void Dados() throws SQLException{
        ConnUsuarios u = new ConnUsuarios();
        ArrayList<Usuarios> user = u.Busca();  
        if(user.isEmpty()){
            JOptionPane.showMessageDialog(rootPane, "Lista vazia");
        }else{
            boolean[] edicao = {false, false, false, false};
            String[] colunas = new String []{"NOME","LOGIN","SENHA","NIVEL"};
            UsersTableModel mod = new model.UsersTableModel(user, colunas, edicao) {
                Class[] types = new Class [] {
                    java.lang.String.class,//nome
                    java.lang.String.class,//login
                    java.lang.String.class,//senha
                    java.lang.Integer.class};//nivel
                @Override
                public Class<?> getColumnClass(int column) {return types[column];}
            };     
            TableUsers.setModel(mod);
            sorter = new TableRowSorter<TableModel>(mod);
            for (int cont= 0, i =0; i<user.size();++i, ++cont){  
            user.get(i);
            }
        }
    }

VALEU!!!!!!!!!!

Criado 3 de dezembro de 2012
Ultima resposta 4 de dez. de 2012
Respostas 5
Participantes 2