Usando Vetores e Matrizes

3 respostas
M

Olá!
Eu estava usando JTable com Vectors para preenchê-la, porém agora preciso utilizar um array para colocar o nome das colunas e uma matriz para colocar os valores das linhas. Bem, parece simples, porém estou me enrolando na hora de colocar os valores nas linhas e gostaria de uma ajuda.
Eis o código de como ficou a montagem:

class Modelo extends AbstractTableModel {
 	private boolean DEBUG = false;
 	
    private String[] columnNames = {"Matrícula",
                                    "Nome",
                                    "Data de Nascimento",
                                    "E-mail",
                                    "Ênfase",
                                    "CPF",
		    "RG",
		    "Ano Ingresso"
		 };
    
    private Object[][] data = null;

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

    public int getRowCount() 
    {
      if (data == null)
      {
        return 0;
      }    	
        else return data.length;
    }

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

    public Object getValueAt(int row, int col) 
    {
        return data[row][col];
    }

    public Class getColumnClass(int c) 
    {
        return getValueAt(0, c).getClass();
    }
    
    public boolean isCellEditable(int row, int col) 
    {
       return false;
    }

    public void setValueAt(Object value, int row, int col) 
    {
        if (DEBUG) {
            System.out.println("Setting value at " + row + "," + col
                               + " to " + value
                               + " (an instance of "
                               + value.getClass() + ")");
        }

        data[row][col] = value;
        fireTableCellUpdated(row, col);

        if (DEBUG) {
            System.out.println("New value of data:");
            printDebugData();
        }
    }

Agora faço uma consulta no banco de dados e quero preencher a minha tabela:

ArrayList array = metodos.mostraPesquisa("SELECT nome, matricula, rg, cpf, tipo, ano_ingresso, nascimento, email FROM aluno WHERE nome like '"+tnome.getText()+"%' ORDER BY nome");
         		
Iterator iterator = array.iterator();
if (iterator.hasNext())
{
     do
     {          
          Aluno aluno = (Aluno)iterator.next();
          ...
          ...
          ... 
          // Aqui eu tenho que colocar os valores da consulta do banco, nas linhas da minha JTable.
         // Mas não sei como fazer
     }
     while (iterator.hasNext());
}            
tabela.updateUI();

Alguém pode me dar uma ajuda?

OBS: Não adianta fazer data = {

{ valores }

};

Pois dai a cada volta de dentro do while, ele vai apagar os registros anteriores.

Um exemplo seria bem vindo

Valeu…

3 Respostas

J

Kra… seria algo mais ou menos assim:

ArrayList array = metodos.mostraPesquisa("SELECT nome, matricula, rg, cpf, tipo, ano_ingresso, nascimento, email FROM aluno WHERE nome like '"+tnome.getText()+"%' ORDER BY nome"); 
                
Iterator iterator = array.iterator(); 
Object[][] valores = new Object[array.size()][];
int i = 0;
if (iterator.hasNext()) 
{ 
     do 
     {          
          Aluno aluno = (Aluno)iterator.next(); 
          // Passe os valores para o vetor...
          valores[i] = new Object[]{aluno.getNome(), aluno.getEndereco(), ...};
          i++;
     } 
     while (iterator.hasNext()); 
}            
tabela.setData(valores);
tabela.updateUI();

Espero que isso tenha te ajudado…
Flw…

M

Bem…tá dando certo…é quase isso…já fiz um teste e vi que ele colocou os valores certinho, mas to com problema pra mostra isso na JTable agora! Complementando o código que mostrei lá em cima, defino a minha JTable assim:

model = new Modelo();
// Esta table sorter é uma classe que faz um troço aqui, mas que não vem ao caso...
TableSorter sorter = new TableSorter(model);
JTable tabela = new JTable(sorter);
sorter.setTableHeader(tabela.getTableHeader());

Dai eu não posso fazer:

tabela.setData(valores);
tabela.updateUI();

Bem, no caso do setData(valores) foi simples, só criei lá na minha classe Modelo este método, mas e o updateUI()…como vou fazer?
Quando eu faço tabela.updateUI(), ocorre um NullPointerException

J

NullPointerException???

Vc já verificou pq deu esse nullpointerexception via debug???

Passa o código pra mim…

Flw…

Criado 29 de janeiro de 2005
Ultima resposta 30 de jan. de 2005
Respostas 3
Participantes 2