Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Everton.

Verificar se Jtable é vazia

Recommended Posts

Ola pessoal, criei um DefaultTableModel (sim, eu sei, deveria ter feito meu próprio modelo, masss enfim...)

Estou tentando inserir um JOptionPane de tabela vazia, mas estou com problemas na condição.

 

 

//Metodo
private void VerificaTabela(){  

       for(int i = 0; i <tableTabela.getRowCount(); i++){  

               if(tableTabela.getValueAt(i,0).toString().equals("")){  
               JOptionPane.showMessageDialog(null, "Erro...", "Não existe dependentes com esse cnpj", JOptionPane.ERROR_MESSAGE);
               }  

       }  

      }

 

// TableModel

 Consulta_Dependente_CRUD dao = new Consulta_Dependente_CRUD();

           List<Consulta_Dependente> lista = (List<Consulta_Dependente>) dao.listaEmpresa(cnpj);

           DefaultTableModel modelo = (DefaultTableModel) jtableTabela.getModel();
           modelo.setRowCount(0);

           for (Consulta_Dependente e : lista) {
               modelo.addRow(new Object[]{
                   e.getRazao(),
                   e.getCCnpj(),
                   e.getDNome(),
                   e.getDCpf(),
                   e.getDRg(),
                   e.getDTelComercial(),
                   e.getDEmail(),




               });

           VerificaTabela();


           }

           }


           co.Fechar_Conexao();


       } catch  (SQLException exc) {
           JOptionPane.showMessageDialog(null, "Erro: " + exc.getMessage(), "Consulta de proposta", JOptionPane.ERROR_MESSAGE);
       }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você preenche essa tabela com o que?

 

se for com um ResultSet de uma consulta ao banco de dados é só testar

 

if(rs.next)

//retornou algo

else

//nao retornou nada.

 

se for com um arraylist, testa o tamanho do arraylist.

 

arraylist.size() == 0?

---

 

Pelo que entendi isso pode ser feito, desculpe se entendi errado.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia a todos.

 

Na verdade, voce pode também verificar a tabela primeiramente com o método rowCount(), que está presente no Model, desta forma:

 

private void VerificaTabela() {
         Integer rows = tableTabela.getModel().getRowCount();
         if (rows < 0) {
               JOptionPane.showMessageDialog(null,"Aviso...", "Não existe dependentes com esse cnpj", JOptionPane.WARNING_MESSAGE);
		}  else   {
               JOptionPane.showMessageDialog(null, "Aviso...", "Existem "+rows.toString()+" dependenstes com esse cnpj", JOptionPane.WARNING_MESSAGE);
		}

 

Outra dica que te dou, é não use DefaultTableModel, pois esse tipo de model, engessa o seu JTable, a eventos e métodos padrões e não permiti que voce padronize o seu JTable de acordo com suas necessidades, cria uma classe que herde (extenda) AbstractTableModel, e dentro dessa classe, voce pode inclusive configurar os nomes das colunas, o tipo de dado que é retornado em cada célula, e o que é melhor, voce pode passar para esta classe, os dados que alimenta o seu JTable, enfim, lhe permiti inclusive, usar um único objeto JTable, para várias tabelas utilizando AbstractTableModel. Vou te passar um exemplo que fiz para uma aplicação minha.

 


import Bean.AgendaCompBean;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.table.AbstractTableModel;

public class DataGridComp extends AbstractTableModel {

   private ArrayList dataset;
   private static final String[] col = {"ID","Hora","Compromisso","Nome","Assunto","Local","Desmarcou"};

   public DataGridComp(AgendaCompBean bean){
       dataset = new ArrayList();
       Iterator I = bean.getRegistros().iterator();
       while (I.hasNext()){
             AgendaCompBean dbean = (AgendaCompBean)I.next();
             Object[] row = {
        		dbean.getId(),
        		dbean.getHora(),
        		dbean.getCompromisso(),
        		dbean.getNome(),
        		dbean.getAssunto(),
        		dbean.getLocalizacao(),
        		dbean.getDesmarcou()
      		};
      		dataset.add(row);
           }
           fireTableStructureChanged();
   }

   @Override
   public int getRowCount() {
       return dataset.size();
   }

   @Override
   public int getColumnCount() {
       return col.length;
   }

   @Override
   public Object getValueAt(int rowIndex, int columnIndex) {
       Object[] row = (Object[])dataset.get(rowIndex);
       return row[columnIndex];
   }

   @Override
	public void setValueAt(Object value, int row, int col) {
       Object[] dado = (Object[])dataset.get(row);
       dado[col] = value;
       fireTableCellUpdated(row, col);
	}


   @Override
   public boolean isCellEditable(int rowIndex, int columnIndex){
       if (columnIndex==0 || columnIndex==1){
           return false;
       } else {
           return true;
       } 
   }

   @Override
   public Class getColumnClass(int column){
       if (column == 6) {
           return Boolean.class;
       } else {
           return String.class;
       }
   }

   public ArrayList getDataSet(){
  	return dataset;
   }

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

   public Object[] getRow(int row) {
		return (Object[])dataset.get(row);
   }

   public void removeRow(int row) {
		dataset.remove(row);
		fireTableDataChanged();
   }

   public void addRow(Object[] row) {
       dataset.add(row);
       fireTableDataChanged();
   }

   public void addEmptyRow(){
       Object[] row = {0,"","","","","",false};
       dataset.add(row);
       fireTableDataChanged();
   }

}

// Na hora de passar os dados para a tabela, passo desta forma:
......
AgendaCompBean bean = new AgendaCompBean();
bean.setData(new Date("12/09/2011");
bean.setNome("Francisco Dorneles Silva");
bean.....
MeuJTable.setModel(new DataGridComp(bean);
.....

 

Um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.