Jtable dinamico

7 respostas
A
estou fazendo uma tela pelo netbeans( sou fraco em swing usei mto pouco até hj) ele gerou o código da tabela pra min mas nele naum tem como eu setar para o numero de linhas ser dinamico ( adicionar linhas no runtime) vi alguma coisas na internet mas naum to conseguindo adiconalo no meu código esse é o código
jTableMain = new javax.swing.JTable();

jTableMain.setBorder(javax.swing.BorderFactory.createEtchedBorder());

jTableMain.setForeground(new java.awt.Color(255, 255, 255));

jTableMain.setModel(new javax.swing.table.DefaultTableModel(
    new Object [][] {
        {null, null, null, null, null, null, null, null},
        {null, null, null, null, null, null, null, null},
        {null, null, null, null, null, null, null, null},
        {null, null, null, null, null, null, null, null},
        {null, null, null, null, null, null, null, null},
        {null, null, null, null, null, null, null, null},
        {null, null, null, null, null, null, null, null},
        {null, null, null, null, null, null, null, null},
        {null, null, null, null, null, null, null, null},
        {null, null, null, null, null, null, null, null}
    },
    new String [] {
        "Código", "Descrição", "Unidade", "Valor Unitário", "Quantidade", "Desconto Uni.", "Valor Total", "Entrega Seq."
    }
) {
    Class[] types = new Class [] {
        java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
    };
    boolean[] canEdit = new boolean [] {
        false, false, false, false, false, false, false, false
    };

    public Class getColumnClass(int columnIndex) {
        return types [columnIndex];
    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return canEdit [columnIndex];
    }
});

jTableMain.setGridColor(new java.awt.Color(255, 255, 255));

jTableMain.setOpaque(false);

jTableMain.setSelectionBackground(new java.awt.Color(255, 255, 255));



jScrollPane3.setViewportView(jTableMain);

ja li mtas coisas sobre DefaultTableModel mas naum consigo aplicar neste codigo
se alguem puder ajudar
vlwwww

7 Respostas

von.juliano

Leia esse tutorial, depois esse.

Blz? Flw!

rbroz85

amigao eu fiz uma classe pra mim que eh uma generica… serve pra qualquer jtable
que vai reslver seu problema!

mas so tem um problema!! ta no meu computador no RJ
agora estou em Brasilia.
manda um email pra mim ou no msn
q eu te passo
la pra quinta ja to em casa!

abraço

A

blz me manda essa classe pra min :smiley:
to meio confuso é com esse ódigo do netbeans hauahuah
num me da mta liberdade ele.
vo mandar o email dps pra vc
flww
vlwwww

rbroz85

blz espero

entao o esse codigo do netbeans eh mei oestranho mesmo

o que vc deve fazer eh o seguinte… criar uma classe extendida pelo AbstractTableModel

altomaticamente quando fizer isso… o netbeans vai implementar 3 metodos essenciais pra funcionar, sao eles:

getColumnCount
getRowCount
getValueAt

ae tipo… vc pode criar um metodo para adicionar uma lista
eu custumo fazer assim:

private List<Object[]> litsTabela

tendo essa lista no objeto…

nos 3 metodos principais voce faz assim:

getColumnCount:

return litsTabela.get(0).length

no
getRowCount

return litsTabela.size();

e nesse:

getValueAt

Object ob = litsTabela.get(rowIndex);

return ob[columnIndex];

vai tentando ae…
de qualquer maneira eu te mando…

mas da uma olhada nos links que o amigo von.juliano te passou!

sao bons

abraço

Fernando_Generoso_da

rbroz85,

se me permite uma opinião, o melhor para construir uma tabela dita “dinâmica”, que seria uma tabela onde tu não teria as colunas definidas, digamos assim, seria utilizar a classe TableColumnModel, onde tu trabalharia com o modelo de dados de coluna.

Pelo que entendi, não era isso que o autor do post gostaria (me corrija se estiver enganado), mas o problema é que o netbeans coloca como default certo numero de linhas e colunas.

Como o rbroz85 falou, o ideal, sempre para qualquer tipo de aplicação é criar uma classe extendendo AbstractTableModel e implementar os próprios métodos. Para cada tabela do meu sistema, para tipos de dados diferentes, tenho um TableModel próprio. Apenas em casos muito especiais, onde por exemplo o usuário poderia selecionar as colunas que gostaria que aparecessem em um jtable, eu implementaria um JTable Dinâmico. Em todos os outros casos, implemento um TableModel para cada Entidade que eu preciso.

Segue um link que pode te ajudar:

http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

Fernando

samea

Alguem ai sabe me dizer como eu crio uma tabela ou grid para receber os registros do banco de dados!
Eh que na verdade eu nunca trabalhei com tabelas nem grid em banco de dados to muito perdida!
Se alguem ai puder me ajudar eu agradeco!
bjokas

ViniGodoy

Não use DefaultTableModel: Ele deixa seu código mais complexo, duplica seus dados na memória (e o processamento para obte-los), torna a aplicação mais confusa e mais difícil de manter.

No lugar, crie um table model próprio, filho de AbtractTableModel.

Veja esse exemplo:
http://www.guj.com.br/posts/list/98452.java#530523

Não deixe de ler esses ótimos artigos sobre o assunto:
http://www.informit.com/articles/article.aspx?p=332278
http://www.informit.com/articles/article.aspx?p=333472

E essas classes espertinhas pra lidar com JTable:
http://www.guj.com.br/posts/list/100793.java

A última inclui uma classe para auxiliar em JTable e uma classe de auto-filtro, igual ao do excel.

Samia, esses links também servem pra vc.

Criado 14 de janeiro de 2009
Ultima resposta 20 de jan. de 2009
Respostas 7
Participantes 6