Como exibir os dados em uma JTable criada com o Visual Editor?

8 respostas
touresfinge

Oi pessoal, mais uma vez preciso da ajuda d vcs.

Bom eu tou criando uma aplicação usando o editor grafico do netbeans, mas num tou conseguindo exibir os dados em uma jtable.
É o seguinte, tenho uma classe q executa as rotinas relacionadas a BD e uma classe chamada jFrmBrowseEmpresas, onde se encontra a jTable.
Segue o codigo p q vcs me ajudem a corrigi-lo :

// - Rotina que busca as empresas cadastradas no bando de dados
public void getEmpresas(){
    Vector lin   = new Vector();
    Vector colun = new Vector();
    Vector dod   = new Vector();	                    
try{			
    this.stringSql = "SELECT * FROM sis_empresas" ;
    Statement st = conexao.createStatement() ;
    ResultSet rs = st.executeQuery(this.stringSql);
    ResultSetMetaData rsmd = rs.getMetaData() ;
    for ( int col = 1 ; col <= rsmd.getColumnCount() ; col++ )
        colun.add( rsmd.getColumnName(col));
        while(rs.next()){
            dod.addElement(Integer.toString(rs.getInt(1)));
            dod.addElement(rs.getString(2));
            lin.addElement(dod);
            dod= new Vector();
        }
    }		
catch(SQLException e){
    JOptionPane.showMessageDialog(null,"Erro"+e.getMessage(),"Erro no Banco de dados",2);
}	
DefaultTableModel modelo = new DefaultTableModel(lin,colun);
jFrmBrowseEmpresas.browseEmpresa.jTable = new JTable(modelo);
jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(0).setPreferredWidth(5);
jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(0).setHeaderValue("Código");
jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(1).setPreferredWidth(350);
jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(1).setHeaderValue("Razao");		
}

Desde já muito obrigadu …

8 Respostas

ateubh

dá uma olhadinha nesse tutorial

:arrow: http://www.guj.com.br/java.tutorial.artigo.140.1.guj

touresfinge

Ja olhei esse capitulo e o seguinte, mas neles esta sendo gerado um Jtable atraves de codigo, dessa forma eu consigo fazer, mas a minha foi criada pelo editor grafico, ela ja existe, só preciso popular ela.

paulorb.pacheco

Colega eu sempre faço assim, se é certo ou errado não sei…
Tb não sei se entendi sua dúvida… hehehe

final String[] colunas = {"coluna1" , "coluna2"};
        final Object[][] valores = new Object[1][2];
        valores[0][0]= new String("Oi");
        valores[0][1]= new String("...");
        tabela.setModel(new javax.swing.table.DefaultTableModel(      
            valores,
            colunas){

                public Class getColumnClass( int column )
                {
                    return getValueAt(0, column).getClass();
                }

                public int getColumnCount()
                {
                    return colunas.length;
                }

                public String getColumnName( int column )
                {
                    return colunas[column];
                }

                public int getRowCount()
                {
                    return valores.length;
                }
        });
touresfinge

A jTable ta na classe jFrmBrowseEmpresas, e esse codigo tah na classe rotinasBD, eu quero colocar os dados na jTable, mas qdo eu rodo a aplicação, a grid tah vazia …

Num é esse codigo q eu deveria usar ???:

DefaultTableModel modelo = new DefaultTableModel(lin,colun);

jFrmBrowseEmpresas.browseEmpresa.jTable.setModel(modelo);
paulorb.pacheco

No DefaultTableModel modelo = new DefaultTableModel(lin,colun);
O “lin” teria que ser uma matriz String[][], Object[][] por exemplo…
Nunca vi ser um vector como vc está fazendo…

touresfinge

Dessa forma funciona p cria a jtable pelo codigo, mas blza …

Como ficaria então esse codigo ? :

08/06/2006 10:14:23
Mensagens: 55
Online

// - Rotina que busca as empresas cadastradas no bando de dados

public void getEmpresas(){

Vector lin = new Vector();

Vector colun = new Vector();

Vector dod = new Vector();

try{

this.stringSql = SELECT * FROM sis_empresas ;

Statement st = conexao.createStatement() ;

ResultSet rs = st.executeQuery(this.stringSql);

ResultSetMetaData rsmd = rs.getMetaData() ;

for ( int col = 1 ; col <= rsmd.getColumnCount() ; col++ )

colun.add( rsmd.getColumnName(col));

while(rs.next()){

dod.addElement(Integer.toString(rs.getInt(1)));

dod.addElement(rs.getString(2));

lin.addElement(dod);

dod= new Vector();

}

}

catch(SQLException e){

JOptionPane.showMessageDialog(null,Erro+e.getMessage(),Erro no Banco de dados,2);

}

DefaultTableModel modelo = new DefaultTableModel(lin,colun);

jFrmBrowseEmpresas.browseEmpresa.jTable.setModel(modelo);

jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(0).setPreferredWidth(5);

jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(0).setHeaderValue(Código);

jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(1).setPreferredWidth(350);

jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(1).setHeaderValue(Razao);

}
paulorb.pacheco

Olá colega eu faria assim:

public void getEmpresas(){
        Vector lin = new Vector();
        String[] colunas = new String[2];
        Vector dod = new Vector();
        try{
            this.stringSql = "SELECT * FROM sis_empresas" ;
            Statement st = conexao.createStatement() ;
            ResultSet rs = st.executeQuery(this.stringSql);
            ResultSetMetaData rsmd = rs.getMetaData() ;
            for ( int col = 1 ; col <= rsmd.getColumnCount() ; col++ ){
                colunas[rsmd.getColumnName(col)];
            }
            while(rs.next()){
                dod.addElement(Integer.toString(rs.getInt(1)));
                dod.addElement(rs.getString(2));
                lin.addElement(dod);
                dod = new Vector();
            }
        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null,"Erro"+e.getMessage(),"Erro no Banco de dados",2);
        }
        String[] colunas = new String[2];
        Object[][] matriz = new matriz[lin.getSize()][2];
        
        for(int i = 0; i < lin.getSize(); i++){
            matriz[i][0] = ((Vector)lin.get(i)).get(0);
            matriz[i][1] = ((Vector)lin.get(i)).get(1);
        }

        jFrmBrowseEmpresas.browseEmpresa.jTable.setModel(new javax.swing.table.DefaultTableModel(      
             valores,
             colunas){
 
                 public Class getColumnClass( int column )
                 {
                     return getValueAt(0, column).getClass();
                 }
 
                 public int getColumnCount()
                 {
                     return colunas.length;
                 }
 
                 public String getColumnName( int column )
                 {
                     return colunas[column];
                 }
 
                 public int getRowCount()
                 {
                     return valores.length;
                 }
         });
        jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(0).setPreferredWidth(5);
        jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(0).setHeaderValue("Código");
        jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(1).setPreferredWidth(350);
        jFrmBrowseEmpresas.browseEmpresa.jTable.getColumnModel().getColumn(1).setHeaderValue("Razao"); 
    }

Se alguem tiver outra idéia de colocar os dados em um JTable me avise…
:smiley:
Ahhh… tipos… Eu não uso o Vector e sim outra lista, sendo que vc tem que colocar o tipo da lista que é o recomendado no java 1.5…

touresfinge

Ai pessoal, resolvido, consegui …, segue o codigo p quem desejar ?

// - Rotina que busca as empresas cadastradas no bando de dados
public void getEmpresas(){
Vector lin   = new Vector();
Vector colun = new Vector();
Vector dod   = new Vector();	
try{			
    this.stringSql = "SELECT * FROM sis_empresas" ;        
    Statement st = conexao.createStatement() ;
    ResultSet rs = st.executeQuery(this.stringSql);
    colun.add( "COD" );        
    colun.add( "RAZAO" );        
    colun.add( "P" );        
    colun.add( "CNPJ" );                
    while(rs.next()){
        dod.addElement(rs.getString("codigo_empresa"));
        dod.addElement(rs.getString("razao_empresa"));
        dod.addElement(rs.getString("pessoa_empresa"));
        dod.addElement(rs.getString("cnpj_empresa"));                
        lin.addElement(dod);
        dod= new Vector();
    }
    
    DefaultTableModel modelo = new DefaultTableModel(lin, colun);

    // e passamos o modelo para criar a jtable
     jFrmBrowseEmpresas.browseEmpresa.jTblDados.setModel(modelo) ;
    jFrmBrowseEmpresas.browseEmpresa.jTblDados.getColumnModel().getColumn(0).
            setPreferredWidth(50);
    jFrmBrowseEmpresas.browseEmpresa.jTblDados.getColumnModel().getColumn(1).
            setPreferredWidth(250);
    jFrmBrowseEmpresas.browseEmpresa.jTblDados.getColumnModel().getColumn(2).
            setPreferredWidth(20);
    jFrmBrowseEmpresas.browseEmpresa.jTblDados.getColumnModel().getColumn(3).
            setPreferredWidth(150);
    }		
catch(SQLException e){
    JOptionPane.showMessageDialog(null,"Erro"+e.getMessage(),"Erro no Banco de dados",2);
}	
}

Muito obrigadu …!!!

Criado 4 de janeiro de 2007
Ultima resposta 5 de jan. de 2007
Respostas 8
Participantes 3