Jtable consultar

bom, o que estou tentando fazer é o seguinte tenhu um jtable com “nome” e “codigo” certo…

na minha tela tenho o botão consultar quando clikado aparecerá os dados digitados nos campo que eu tenhu ja cadastrado…

que será buscado no banco de dados …mas não estou conseguindo jogar eles no jtable…

pq qundo fizer a consulta na msm tela aprecerá no jtable os dados encontrados com o nome ou codigo!!

grato á todos!!!

Se você estiver usando o DefaultTableModel (o que não é muito indicado), você poderá fazer assim:

Supondo que você tenha uma lista de itens já preenchida…

List<Pessoa> listaItens;

//listaItens = metodoPreencheLista();

for (int i = 0; i <listaItens.size(); i++) {
    ((DefaultTableModel) this.tabelaDados.getModel()).addRow(new Object[]{listaItens.get(i).getCodigo(),listaItens.get(i).getNome()});
}

Mas se não quiser usar o DefaultTableModel, acesse:

http://www.guj.com.br/posts/list/15/199067.java#1001295

Espero ter ajudado, abraço!

Pois é cara, ja tem uma ação um REGIME quase militar aqui no forum contra DefaultTableModel, tem um post do Vini aqui no GUJ que explica muito bem como usar seu proprio Model extendendo de AbstractTableModel, vale muito apena vc dar uma olhada.

Exemplo básico de um modelo próprio de tabela…

public class ModeloTabela extends AbstractTableModel {

    private String[] nomesColunas = new String[]{"Código", "Nome"};
    private List<Object[]> dados = new ArrayList<Object[]>();

    public ModeloTabela() {
    }
    
    public List<Object[]> getDados() {
        return dados;
    }

    public void setDados(List<Object[]> dados) {
        if(dados == null){
            dados = new ArrayList<Object[]>();
        }
        this.dados = dados;
        this.fireTableRowsInserted(0, this.dados.size() - 1);
    }

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

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

    @Override
    public String getColumnName(int col) {
        return nomesColunas[col];
    }

    public Object getValueAt(int row, int col) {
        return dados.get(row)[col];
    }

    
    public Class getColumnClass(int c) {
        Object valor = getValueAt(0, c);
        if (valor == null) {
            valor = "";
        }
        Class classe = valor.getClass();
        return classe;
    }
   
    @Override
    public boolean isCellEditable(int row, int col) {
        return true;
    }
    
    
    @Override
    public void setValueAt(Object value, int row, int col) {
        dados.get(row)[col] = value;
        fireTableCellUpdated(row, col);
    }

    public void removerLinha(int linha) {
        this.dados.remove(linha);
        this.fireTableRowsDeleted(linha, linha);
    }

    public void removerTodasAsLinhas() {
        int quantidadeLinhas = this.dados.size();
        this.dados = new ArrayList();
        this.fireTableRowsDeleted(0, quantidadeLinhas);
    }

    public void adicionarLinha(Object[] objetosLinha) {
        if (this.dados == null) {
            this.dados = new ArrayList<Object[]>();
        }
        this.dados.add(objetosLinha);
        this.fireTableRowsInserted(this.dados.size() - 1, this.dados.size() - 1);
    }

    public void alterarLinha(Object[] objetosLinha, int linha) {
        if (linha > -1 && linha < this.getRowCount()) {
            if (this.dados == null) {
                this.dados = new ArrayList<Object[]>();
            }
            this.dados.set(linha, objetosLinha);
            this.fireTableRowsUpdated(linha, linha);
        }
    }

    public String[] getNomesColunas() {
        return nomesColunas;
    }

    public void setNomesColunas(String[] nomesColunas) {
        this.nomesColunas = nomesColunas;
    }
}

Você pode utilizá-lo assim:

List<Pessoa> listaItens;  
  
//listaItens = metodoPreencheLista();  
  
for (int i = 0; i <listaItens.size(); i++) {  
    ((ModeloTabela)this.jTable1.getModel()).adicionarLinha(new Object[]{listaItens.get(i).getCodigo(),listaItens.get(i).getNome()});  
}  

Espero ter ajudado!

Não é regime militar, é campanha!!! \o/

Mas é pelo bem de todos, o Default só traz dores de cabeça. E fortes.

O princípio básico de se criar um model próprio é justamente não ter algo como

List<Object[]>

dentro do model, e sim ter um:

List<Pessoa>

Isso sim, traz grandes vantagens para o desempenho e a manutenção do sistema, pois evita que você tenha que copiar dados da sua classe de negócio para seu modelo dentro da sua view. Também permite que você exiba só informações relevantes para seu usuário, sem perder informações importantes, como o id de quem está naquela linha.

Seu model, apesar de funcionar, não deixa de ser uma reescrita do Default e, portanto, é tão prejudicial quanto o próprio Default.

Não é regime militar, é campanha!!! \o/

Mas é pelo bem de todos, o Default só traz dores de cabeça. E fortes.[/quote]

eu que o diga as dores de cabeça, se vc nao tivesse me ajudado eu tava ferrado aqui agora kkkk.

Bom e nunca usei esse DefaultTableModel …

eu montei o Jtable no net beans ja esta pronta agora tô querendo os dados dentro dos campo do jtable!!

Imaginei que postariam algo sobre o List<Object[]>. hehehe

Uso o List<Object[]> pra ter um Modelo mais genérico.

Concordo totalmente com a campanha, principalmente por já ter usado o DefaultTableModel e é um inferno pra dar manutenção, mas do jeito que fiz, pra mim é suficiente.

Abraço!

Mas ainda existe um pequeno problema que a maioria dos TableModels que vi implementado ainda usa Object[][] ou List<Object[]> que no final das contas é um DefaultTableModel mais “bonitinho”.

O interessante realmente é ter um get que retorna o tipo do objeto que voce quer.

Um otimo exemplo é o TableModel generico que o ViniGodoy criou que usa enums para as colunas ou o ObjectTableModel que criei que usa anotações nos atributos da classe.