Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

krabby

ArrayList<String> to JTable

Mensagens Recomendadas

krabby    0
krabby

Boa Noite,

Tenho um projecto que faz várias consultas a uma base de dados SQL Lite. O resultado dessas consultas está a ser devolvido em ArrayList<Strings>.

Pretendia que esses resultados fossem apresentados na interface Swing numa Jtable. Estou com algumas dificuldades em fazer isso.

Insiro uma jTable directamente na interface arrastando inclusivé da pallete de objectos.

Alguém já teve esta dificuldade? Podem dar-me umas indicações de como proceder?

Cumprimentos!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knitter    101
Knitter

A ideia base é preencheres o modelo da JTable com os teus dados, tens de copiar os dados que recebes para o modelo da tabela.

Podes fazer isto de duas formas, uma será percorrer a lista que tens neste momento e ir adicionando ao modelo padrão da tua tabela os dados. O modelo padrão de uma tabela é um objecto da class DefaultTableModel e tem métodos para adicionar linhas, colunas e tudo o que é necessário para preencher com dados a tabela.

A segunda opção, que recomendo, é a criação do teu próprio modelo que faça a adaptação entre a lista que recebes e o que uma JTable espera, podes ver informações sobre isso em http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data .

Criar um modelo teu é simples e neste caso passará por algo do género:

public class MeuModelo extends AbstractTableModel() {

    private ArrayList<String> linhas;
    
    public MeuModelo(ArrayList<String> linhas) {
        //atenção que este código nunca deveria ser uma atribuição 
        //directa se não souberes bem o que estás a fazer, mais seguro seria copiar 
        //os objectos passados para a lista local.
        this.linhas = linhas;
    }

    public String getColumnName(int col) {
        return "Coluna X";
    }

    public int getRowCount() {
        if(linhas != null) {
            return linhas.size();
        }

        return 0;
    }

    public int getColumnCount() { 
        return 1; //assumi que só tens uma coluna
    }
    
    public Object getValueAt(int row, int col) {
        //ignoramos a coluna porque uma lista só tem uma coluna
        return linhas.get(row);
    }

    public boolean isCellEditable(int row, int col) { 
        //nenhuma das linhas é editável
        return false;
    }
    
}

O código é um exemplo de uma possível implementação, que terás de adaptar ao teu código mas dá para teres uma idea do que fazer. O importante é perceberes que esta classe, que depois tens de instanciar e colocar dentro da tabela (usando o setModel ou usando o editor de propriedades do NetBeans IDE que parece ser o teu editor), e que faz a ponte entre a lista que recebes da consulta e a apresentação dos dados.

Os métodos mais importantes são o getRowCount, getColumnCount e getValueAt já que são estes que permitem à tabela saber o que apresentar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade