Busca id passando dados errados com Model

4 respostas
zicky23

bom dia tenho a seguinte linha que busca um código em um jtable

Integer CodLogradouro = (Integer)mod.getValueAt(tabela.getSelectedRow(), 1);
mas quando eu clico em ordernar pelo:
public TableRowSorter<TableModel> sorter;

ele ordena correto, mas ao clicar na linha para passar o código à um JTextField ele passa errado.

olha como está o meu ModelLogradouros.java

package model;

import db.Logradouros;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author vielmond
 */
public class ModelLogradouros extends AbstractTableModel {  
    private static final int COL_NOME_LOGRADOURO = 0;  
    private static final int COL_COD_ID = 1;  
    
    private String[] colunas = null;
  
    private List<Logradouros> valores;         
  
    //Esse é um construtor, que recebe a nossa lista 
    public ModelLogradouros(List<Logradouros> valores, String[] colunas, boolean[] edicao) {  
          this.valores = new ArrayList<Logradouros>(valores);  
            setColunas(colunas);
            colsEdicao = edicao;
    }  
  
    public int getRowCount() {  
        //Quantas linhas tem sua tabela? Uma para cada item da lista.  
        return valores.size();  
    }  
    
//Alterar o conteúdo do modelo, tem que setar também o setValueAt
    private boolean[] colsEdicao;

    @Override
    public boolean isCellEditable(int row, int col) {
        return colsEdicao[col];
//    return false;
    }
    
    
    public String[] getColunas() {
        return colunas;
    }
    
    public void setColunas(String[] strings) {
        colunas = strings;
    }
  
    public int getColumnCount() {  
        //Quantas colunas tem a tabela? 
        return getColunas().length;
    }  
  
    @Override
    public String getColumnName(int col) {
        return colunas[col];
    } 
  
    public boolean removeRow(int line){   
         valores.remove(line);   
         return true;   
      } 
    
    public Object getValueAt(int row, int column) {  
        //Precisamos retornar o valor da coluna column e da linha row.  
        Logradouros titulo = valores.get(row);  
        if (column == COL_NOME_LOGRADOURO) return titulo.getNomeLogradouro();  
        else if (column == COL_COD_ID) return titulo.getCodLogradouro(); 

        return ""; //Nunca deve ocorrer  
    }  
  
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {  
        Logradouros titulo = valores.get(rowIndex);  
        //Vamos alterar o valor da coluna columnIndex na linha rowIndex com o valor aValue passado no parâmetro.  
        //Note que vc poderia alterar 2 campos ao invés de um só.  
        if (columnIndex== COL_NOME_LOGRADOURO) titulo.setNomeLogradouro(aValue.toString());  
        else if (columnIndex== COL_COD_ID) titulo.setCodLogradouro((Integer)aValue); 

    }  
  
    public Class<?> getColumnClass(int columnIndex) {  
        //Qual a classe das nossas colunas? Como estamos exibindo texto, é string.  
        return String.class;  
    }  
       
    //Já que esse tableModel é de livros, vamos fazer um get que retorne um livro inteiro.  
    //Isso elimina a necessidade de chamar o getValueAt() nas telas.   
    public Logradouros get(int row) {  
        return valores.get(row);  
    }  
}

o que está errado será?

obrigado

4 Respostas

L

Se o problema for a ordenação, tente ordenar com Collections.

painhoo2

zicky23:
bom dia tenho a seguinte linha que busca um código em um jtable

Integer CodLogradouro = (Integer)mod.getValueAt(tabela.getSelectedRow(), 1);


Bom amigo, se você está tentando pegar a primeira coluna de da sua linha, lembre-se que em programação a contagem comessa do “0”.

Neste caso ai você está pegando a segunda coluna da sua linha, se você quer pegar a primeira coluna da linha selecionada use o “0”.
exemplo:

Integer CodLogradouro = (Integer)mod.getValueAt(tabela.getSelectedRow(), 0);
Resplandes

Use o projeto Towel e com ele caso queira filtro use o mesmo e nao tera esses problemas com o ObjectTebleModel

zicky23

Valeu, vou tentar

Criado 7 de maio de 2013
Ultima resposta 20 de mai. de 2013
Respostas 4
Participantes 4