Mostrar Tabela em um JPanel

4 respostas
V

Pessoal sei que já tem bastante coisa sobre tabelas no fórum, mas nada resolveu minha dúvida!
Tipo consegui, criar a tabela normal e adicionar itens nela. Mas não estou conseguindo mostrar ela no painel! Segue abaixo o trecho do codigo onde estou com problemas.

Codigo no metodo criaTabela();
OBS: JTable tabela; e DefaultTableModel modelo=new DefaultTableModel estão declarados como global. Antes do public main…

public void criaTabela()
    {
        tabela=new JTable(modelo);
        modelo.addColumn("Produto");
        modelo.addColumn("Quant. Parcelas");
        modelo.addColumn("Preço Parcela");
        modelo.addColumn("Loja");
        tabela.getColumnModel().getColumn(0).setPreferredWidth(80);
        tabela.getColumnModel().getColumn(1).setPreferredWidth(20);
        tabela.getColumnModel().getColumn(2).setPreferredWidth(20);
        tabela.getColumnModel().getColumn(3).setPreferredWidth(80);           
    }

Codigo no painel:

private void JTabbed2MouseClicked(java.awt.event.MouseEvent evt)
 {                                      
    //Essas ações abaixo são tomadas após o usuario clicar em uma aba. 

    String produto,quantpar,preccadpar,loja;  
    criaTabela();
    try
    {
        Connection con=DriverManager.getConnection(url,usuario,senha);
        Statement stm=con.createStatement();    
        ResultSet rs=stm.executeQuery("select*from dados");                 
        while(rs.next()==true)
        {                     
            produto=rs.getString("da_produto");            
            quantpar=rs.getString("da_quantpar");            
            preccadpar=rs.getString("da_preccadpar");
            loja=rs.getString("da_loja"); 
            modelo.addRow(new Object [] {produto,quantpar,preccadpar,loja});            
        }                       
    }        
    catch(SQLException ex)
    {
        JOptionPane.showMessageDialog(null, ex.getMessage());
    }
}

Até aí acho que está certo, claro que não está um codigo bonito mas acho que está certo. Agora como faço para mostrar a tabela preenchida na tela!?

Obrigado desde já!

4 Respostas

V
  1. Não use o DefaultTableModel;
  2. Coloque um JScrollPane na área desejada do painel;
  3. Não use o DefaultTableModel;
  4. Coloque o JTable sobre o JScrollPane, através do método setViewPort do ScrollPane;
  5. Não use DefaultTableModel.
V

Problema abaixo resolvido! O problema era que a cada novo clique na aba o codigo estava recriando a tabela! Muito obrigado pessoal.
Aproveitando que a dúvida abaixo foi resolvida, vou colocar mais uma aqui :slight_smile: Como crio um table model pessoal para não usar o Default?

Consegui! Brigadão Vini!! Podexa entendi o recado “Não use DefaultTableModel”. Vou aprender a não usar não sei como não usar mas pesquisarei rs…ultima pergunta! As colunas estão sendo duplicadas a cada novo clique na aba, como resolvo isso? Obrigado!

V

Siga o link ao lado do texto em vermelho na minha assinatura. Lá deve ter uns 10 exemplos de TableModels.

Mas você precisará organizar um pouco mais seu código também.
Por exemplo, é importante e necessário dividir sua aplicação em camadas.

Para isso, será necessário criar e definir objetos de negócio, ao invés de trabalhar com o ResultSet diretamente.

Procure estudar sobre o que são DAOs, objetos de negócio e a arquitetura MVC.

V

Vini, obrigado pelas informações cara e pode ter certeza que vou aperfeiçoar meu código sim, janeirão estarei começando a formação java na caelum para isso.

Obrigado!!

Criado 12 de dezembro de 2011
Ultima resposta 13 de dez. de 2011
Respostas 4
Participantes 2