Carregar um array [RESOLVIDO]

8 respostas
A

Olá

Eu estou com esse array ai que carrega um jtable com AbstractTableModel indicado pelo ViniGodoy

final Object[][] data = {

{"1", "21/06/2011", "Teste 1", new ImageIcon(situacao), new ImageIcon(editar), new ImageIcon(excluir)},
        {"1", "21/06/2011", "Teste 1", new ImageIcon(situacao), new ImageIcon(editar), new ImageIcon(excluir)}
         
    };

Ele esta funcionando só que eu tenho que colocar as linhas na mão… eu quero carregar ele como o resultado de uma consulta e assim preencher o jTable.

Tentei colocar ele dentro de um while mais não funcionou, depois tentei colocar o while dentro dele e também não funcionou.

Como tenho que fazer para carregar ele +ou- assim:

while (conexao.rs.next()) {

final Object[][] data = {

{"1", "21/06/2011", "Teste 1", new ImageIcon(situacao), new ImageIcon(editar), new ImageIcon(excluir)},
        {"1", "21/06/2011", "Teste 1", new ImageIcon(situacao), new ImageIcon(editar), new ImageIcon(excluir)}
         
    };

}//Final do loop

Ou como seria o correto?

8 Respostas

dobau

o row data pode ser passado como Vector tornando-o mais flexível, então você faria assim:

Vector rowDatas = new Vector();

while (conexao.rs.next()) {
   Vector data = new Vector();

   data.add(rs.getString(1));
   data.add(rs.getString(2));
   data.add(rs.getString(3));

   ...

   rowDatas.add(data);
}

Lembrando que o segundo parâmetro de JTable também é um Vector contendo o nome das colunas, você pode ter mais informações aqui

Outra solução é usar array também, mas para isso você teria que saber a quantidade de linhas retornada no resultsset ou teria que fazer converção de lista para array.

A

Certo e depois é só fazer assim?

final Object[][] data = { rowDatas };

dobau

bem, não sei como você está implementando, mas se for como eu estou pensando seria assim:

JTable table = new JTable(rowDatas, vectorComONomeDasColunas);
A

Estou fazendo assim: todo o processo de preencher o Jtable

public void fnCarregaGrid(String id) throws SQLException {

URL situacao = this.getClass().getResource("/sistema/imagens/Trust24.png");
    URL editar = this.getClass().getResource("/sistema/imagens/table_edit24.png");
    URL excluir = this.getClass().getResource("/sistema/imagens/table_delete24.png");

    //Defini as colunas
    final String[] colunas = {"id", "Data", "Descrição", "Situação", "Editar", "Excluir"};

    conexao.executeSelect("select * from app.anotacoes where codempresa = '" + id + "' order by data");

    Vector rowDatas = new Vector();

    while (conexao.rs.next()) {
        Vector data = new Vector();

        data.add(conexao.rs.getString("id"));
        data.add(conexao.rs.getString("data"));
        data.add(conexao.rs.getString("descricao"));

        rowDatas.add(data);
    }


    final Object[][] data = {
        {"1", "21/06/2011", "Teste 1", new ImageIcon(situacao), new ImageIcon(editar), new ImageIcon(excluir)},
        {"1", "21/06/2011", "Teste 1", new ImageIcon(situacao), new ImageIcon(editar), new ImageIcon(excluir)}
    };


    TableModel dataModel = new AbstractTableModel() {

        public int getColumnCount() {
            //return data[0].length;
            return colunas.length;
        }

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

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

        public String getColumnName(int column) {
            //return "" + column;
            return colunas[column];
        }

        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }

        public boolean isCellEditable(int row, int col) {
            //return col != 2; //Escolha a coluna que não vai ser editável
            return false; //Bloquea todas as colunas
        }

        public void setValueAt(Object aValue, int row, int column) {
            data[row][column] = aValue;
        }
    };

    tabLista.setModel(dataModel);
    tabLista.setRowHeight(30);

    tabLista.getColumnModel().getColumn(0).setMinWidth(0);
    tabLista.getColumnModel().getColumn(0).setMaxWidth(0);
    tabLista.getColumnModel().getColumn(1).setPreferredWidth(70);
    tabLista.getColumnModel().getColumn(2).setPreferredWidth(350);
    tabLista.getColumnModel().getColumn(3).setPreferredWidth(50);
    tabLista.getColumnModel().getColumn(4).setPreferredWidth(40);
    tabLista.getColumnModel().getColumn(5).setPreferredWidth(40);


}
A

Tentei assim:

final Object[][] data = { rowDatas };

e não funcionou

dobau
public void fnCarregaGrid(String id) throws SQLException { 

   URL situacao = this.getClass().getResource("/sistema/imagens/Trust24.png"); 
   URL editar = this.getClass().getResource("/sistema/imagens/table_edit24.png"); 
   URL excluir = this.getClass().getResource("/sistema/imagens/table_delete24.png"); 

   //Defini as colunas 
   final String[] colunas = {"id", "Data", "Descrição", "Situação", "Editar", "Excluir"}; 

   conexao.executeSelect("select * from app.anotacoes where codempresa = '" + id + "' order by data"); 

   Vector rowDatas = new Vector(); 

   while (conexao.rs.next()) { 
      Vector data = new Vector(); 

      data.add(conexao.rs.getString("id")); 
      data.add(conexao.rs.getString("data")); 
      data.add(conexao.rs.getString("descricao")); 

      rowDatas.add(data); 
   } 


   TableModel dataModel = new AbstractTableModel() { 

      public int getColumnCount() { 
         //return data[0].length; 
         return colunas.length; 
      } 

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

      public Object getValueAt(int row, int col) { 
         return ((Vector)rowDatas.elementAt(row)).elementAt(col); 
      } 

      public String getColumnName(int column) { 
         //return "" + column; 
         return colunas[column]; 
      } 

      public Class getColumnClass(int c) { 
         return getValueAt(0, c).getClass(); 
      } 

      public boolean isCellEditable(int row, int col) { 
         //return col != 2; //Escolha a coluna que não vai ser editável 
         return false; //Bloquea todas as colunas 
      } 

      public void setValueAt(Object aValue, int row, int column) { 
         ((Vector)rowDatas.elementAt(row)).setElementAt(aValue, column);
         //data[row][column] = aValue; 
      } 
   }; 

   tabLista.setModel(dataModel); 
   tabLista.setRowHeight(30); 

   tabLista.getColumnModel().getColumn(0).setMinWidth(0); 
   tabLista.getColumnModel().getColumn(0).setMaxWidth(0); 
   tabLista.getColumnModel().getColumn(1).setPreferredWidth(70); 
   tabLista.getColumnModel().getColumn(2).setPreferredWidth(350); 
   tabLista.getColumnModel().getColumn(3).setPreferredWidth(50); 
   tabLista.getColumnModel().getColumn(4).setPreferredWidth(40); 
   tabLista.getColumnModel().getColumn(5).setPreferredWidth(40); 


}
A

Valeu dobau… funcionou 100%

dobau

massa! :slight_smile:

Criado 22 de junho de 2011
Ultima resposta 22 de jun. de 2011
Respostas 8
Participantes 2