JTable, eita negócio complexo

Galera, to tentando entender esse JTable… mas ta dificil. Cara é muito complicado…

To precisando do seguinte: tenho uma telinha de cadastro de user, e quero apenas que ao cadastrar novos users esse user aparece na table. E tambem com as funções de remover e alterar.

OBS. Por enquanto estou usando apenas array para arnazenar os dados… sem bd.

Alguem pode ou consegue me ajudar ??

Dê uma olhada aqui. Tem bons exemplos.

Ao invés de usar um array para os dados da table, use um model.

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

Cara, a table é um negócio muito interessante, ela apenas serve como vizualizador de models. Então, não esqueça de estudar models e tambem a table.
Aqui há exemplos interessantes:
http://www.senun.com/Left/Programming/Java_old/Examples_swing/SwingExamples.html
http://java.sun.com/products/jlf/ed2/book/HIG.Misc.html

outra dica é utilizar o Pesquisar tem muita coisa sobre jtable aqui no forum mesmo… beleza ? falows…

Aqui no GUJ mesmo!
:arrow: http://guj.com.br/java.artigo.140.1.guj
:arrow: http://guj.com.br/java.artigo.147.1.guj

Porisso desanima estuda Java por conta. Vc lêl, lê, lê mas no final das contas ainda está sem saber.

Não consigo fazer essa table, para exibir meus dados. Sabe consigo cria-la, e colocar os valores que quero… mas dai, mas daí já atualizar com novos dados, inserir linhas…

Ta foda…

Valeu quem ajudou ai

Oi nirsu,
Antes de tentar aprender e usar a jtable eu também achava muito foda e um saco. Aí pegueí um exemplo aqui, outro alí, lí os tutorias da Sun e uns pela net.
Depois que você faz o seu primeiro Model e Renderer, você nunca mais vai achar difícil e vai ver como é legal.

Dica: Não enfie os seus dados diretamente no seu jtable. Crei um classe de Model, ou use a classe DefaultTableModel. O objeto desta classe équem vai gerenciar os dados para você. E você não precisará nem mexer com a table, apenas com o model.

Eu tenho um códiglo legal aqui. Vou ser ponho pra vc aqui.

Seu código para criar o model com algum dado e popular na JTable:

List lista = new ArrayList(); Pessoa p = new Pessoa(); p.setNome("Fulano"); p.setIdade( new Integer(30) ); p.setEmail("a@b.c"); lista.add( p ); SeuTableModel seuTableModel = new seuTableModel( lista ); JTable jt = new JTable( seuTableModel );

Adicionando novos dados na tabela:

Pessoa p = new Pessoa(); p.setNome("Ciclano"); p.setIdade( new Integer(21) ); p.setEmail("xxx@yyy.br"); seuTableModel.addPessoa( p );

Seu VO:

[code]package seu.model;

public class Pessoa {
private String nome;
private Integer idade;
private String email;

//metodos get e set
}[/code]

Seu Model:

[code]package seu.model;

import java.util.;
import javax.swing.
;
import javax.swing.event.;
import javax.swing.table.
;
import java.awt.;
import java.awt.event.
;

public class SeuTableModel extends AbstractTableModel {
/**
* Mantém um array com os nomes das colunas.
*/
private final String[] columnNames = {"Nome",
"Idade",
"E-mail"};

/**
 * Mantém os dados a serem apresentados na tabela.
 */
private List data;

/**
 * O construtor deve receber um List com objetos do tipo Pessoa,
 * que serão exibidos na tabela.
 */
public SeuTableModel( List data ) {
    this.data = data;
}

public List getData() {
    return this.data;
}

public void resetData() {
    this.data = new ArrayList();
    this.fireTableDataChanged();
}

public void addNewEmptyLine() {
    addPessoa( new Pessoa() );
}

public void addPessoa( Pessoa p ) {
    this.data.add( p );
    this.fireTableDataChanged();
}

public void removePessoa( Pessoa p ) {
    this.data.remove( p );
    this.fireTableDataChanged();
}

public void removePessoa( int index ) {
    this.data.remove( index );
    this.fireTableDataChanged();
}

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

public int getRowCount() {
    return data.size();
}

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

public Class getColumnClass(int c) {
    switch( c ) {
        case 0:
            return String.class;
        case 1:
            return Integer.class;
        case 2:
            return String.class;
    }
    return String.class;
}

public boolean isCellEditable(int row, int col) {
    switch( col ) {
        case 0:
            return true;
        case 1:
            return false;
        case 2:
            return true;
    }
    return false;
}

public Object getValueAt( int row, int col ) {
    Pessoa p = (Pessoa) data.get( row );
    if( p == null ) return null;
    switch( col ) {
        case 0:
            return p.getNome();
        case 1:
        	return p.getIdade();
        case 2:
        	return p.getEmail();
    }
    return null;
}

/*
 * Don't need to implement this method unless your table's
 * data can change.
 */
public void setValueAt(Object value, int row, int col) {
    Pessoa p = (Pessoa) data.get( row );
    switch( col ) {
        case 0:
        	p.setNome( (String) value );
            break;
        case 1:
        	p.setIdade( (Integer) value );
             break;
        case 2:
        	p.setIdade( (String) value );
            break;
    }
    fireTableCellUpdated(row, col);
}

}[/code]

eu prefiro utilizar a DefultTableModel ela já vem com varios metodos bons… mas mesmo assim de uma implementada… :smiley: valeu ?