Problemas ao inserir varios dados JTable

2 respostas
Micke

Bom dia Pessoal

Estou com o seguinte problema… o select do bd eu consigo fazer normalmente ate mesmo a inserção dos dados na JTable, so que os dados estao sendo inseridos da seguinte maneira(ainda não entendi o porque dos dados estarem ficando assim):

Eu tenho 5 clientes cadastrodos na tabela clientes, com 6 colunas!! qdo mando popular a JTable ele insere os 5 cadastros em cada coluna, ao invez de inserir nas linhas, ou seja ficam os 5 cadastros em cada colunas!!

Segue o código que estou usando:

MyTableModel

Public class MyTableModel extends AbstractTableModel
{
    private ArrayList linhas = new ArrayList();
    private String[] colunas = {"Aqui vai o nome das 6 colunas"};

    public MyTableModel(ArrayList dados)
    {
        this.linhas = dados;
        setLinhas(linhas);
        setColunas(colunas);
    }

    public int getColumnCount()
    {
        return colunas.length;
    }
    public int getRowCount()
    {
        return linhas.size();
    }
    public Object getValueAt(int row, int col)
    {
        String linha = (String) getLinhas().get(row);
        return linha;
    }
    public String getColumnName(int column)
    {
        return colunas[column];
    }
    public Class getColumnClass(int c)
    {
        switch(c)
        {
        case 0:
            return Integer.class;
        case 1:
            return Integer.class;
        case 2:
            return String.class;
        case 3:
            return String.class;
        case 4:
            return String.class;
        case 5:
            return String.class;
        case 6:
            return String.class;
        }
        return String.class;
    }

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

        return false;
    }

    public void setValueAt(Object aValue, int row, int column)
    {
        String linha = (String) getLinhas().get(row);
        linha = (String) aValue;
        fireTableCellUpdate(row, column);
    }

    public ArrayList getLinhas()
    {
        return linhas;
    }
    public String[] getColunas()
    {
        return colunas;
    }
    public void setLinhas(ArrayList list)
    {
        linhas = list;
    }
    public void setColunas(String [] column)
    {
        colunas = column;
    }
}

Métodos usados para popular a JTable, estao em outra classe:

public ResultSet getDados()
{
    try
    {
        stm = con.getStatement();
        rs = stm.executeQuery("Aqui vai meu select");
    }
    catch(SQLException e)
    {
        e.printStackTrace();
    }

    return rs;
}

public void inserirDados(ResultSet rsDados)
{
    try
    {
        ResultSetMetaData metaData = rsDados.getMetaData();
        String [] colunas = new String[metaData.getColumnCount];
        ArrayList linhas = new ArrayList();

        while(rsDados.next())
        {
            for(int i = 0; i < colunas.length; i++)
            {
               linhas.add(rsDados.getString(i+1));
            }
        }

    MyTableModel modelo = new MyTableModel(linhas);
    MinhaTabela.setModel(modelo);
    TableRowSorter sorter = new TableRowSorter(modelo);
    MinhaTable.setRowSorter(sorter);
    }        
    catch(SQLException e)
    {
        System.out.println(e);
    }
}

Edit: Acabei esquecendo de colocar a minha duvida :shock:

gostaria de saber o que eu estaria fazendo errado? que ao inves de popular a JTable linha por linha, esta populando tudo nas colunas!!!

Desde já agradeço!!

2 Respostas

julianofischer

Cara, to sem tempo, to indo viajar daqui alguns minutos então vou te responder rapidamente…
nao tive tempo pra analisar seu código…
para inserir na table… o primeiro parametro eh a linha e o segundo a coluna…
lembrando que se a table for 3x3 começamos do 0 até o 2… tanto pra linha tanto pra coluna!
quando chegar leio este topico novamente
foi mals se nao consegui ajudar mto!

Micke

Desculpa por estar dando up no topico mas é que estou precisando muito resolver esse problema se alguem tiver uma dica!!!

Estou a pesquisar desde ontem pra tentar resolver!!! Pois atravez da tabela estarei excluindo e alterando dados e atualizando no BD!!!

Desde ja Agradeço!

Criado 11 de março de 2008
Ultima resposta 12 de mar. de 2008
Respostas 2
Participantes 2