Ordernar tabela com table model

1 resposta
M

olá pessoal
carrego meu table model da seguinte maneira

int contador = 1;
		TableModelConsultaClassificacao.setRowCount(0); // limpa grid
		Connection con = Conexao.obterConexao();
		String sql = "";
		sql += " select " ;
		sql += " nome ... " ;
		
		try {
			Statement stm = con.createStatement();
			ResultSet rst = stm.executeQuery(sql);
			while (rst.next()) {
				Vector linhagrid = new Vector();
				linhagrid.addElement(contador);
				linhagrid.addElement(rst.getString(1).trim());
				TableModelConsultaClassificacao.addRow(linhagrid);
				contador++;
			}
			
			TableModelConsultaClassificacao.fireTableDataChanged();
			stm.close();
			con.close();
			rst.close();

		} catch (SQLException e1) {
			JOptionPane.showMessageDialog(null, "ConsultaClassificacao - Erro 1 ! \n" + e1.getMessage(), "Operador", JOptionPane.ERROR_MESSAGE);
		} catch (Exception e2) {
			JOptionPane.showMessageDialog(null, "ConsultaClassificacao - Erro 2 ! \n" + e2.getMessage(), "Operador", JOptionPane.ERROR_MESSAGE);
		}

como faço agora para ordenar ele, conforme minhas necessidades, por exemplo
o maior valor da coluna 3 com o maior valor da coluna 4 com o menor valor da coluna
obrigado

1 Resposta

Nicolas_Fernandes

E aí, marcoscorso!

Cara, porque você não faz o seu TableModel tipado? Você tá pegando valores aleatórios do seu ResultSet e colocando dentro. Você pode fazer o seu método nas classes DAO para recuperar a coleção de objetos: [Suponhamos que sejam objetos Pessoa]
public List<Pessoa> recuperarPessoas() throws SQLException {

    Connection entidadeConnection = Conexao.obterConexao(); 
    String sentenca = "SELECT * FROM PESSOAS";
    Statement entidadeStatement = entidadeConnection.createStatement();
    ResultSet entidadeResult = entidadeStatement.executeQuery(sentenca);

    List<Pessoa> entidadePessoas = new ArrayList<Pessoa>();
    while (entidadeResult.next()) {
        entidadePessoas.add(recuperarObjeto(entidadeResult));
    }
    entidadeResult.close();
    return entidadePessoas;
}

private Pessoa recuperarObjeto(ResultSet entidadeResult) throws SQLException {
// monta o seu objeto e retorna ele.
}

Agora, se você quer ordenar por NOME, você faz sua consulta ordenando pelo campo nome.
Se você quer ordenar por DATA DE NASCIMENTO, você faz sua consulta ordenada pela data de nascimento.
E assim sucessivamente!

Quando você recuperar sua coleção ordenada do modo que você quer, você passa para o seu TableModel.
public class PessoasTableModel extends AbstractTableModel {

    private List<Pessoa> entidadePessoas;

    public atualizarTabela(List<Pessoa> entidadePessoas) {
        this.entidadePessoas = entidadePessoas; // altera sua coleção atual...
        fireTableDataChanged(); // avisa ao modelo que você alterou os dados e ele redesenha a tabela.
    }
}

Espero ter ajudado,
fique com Deus! :D

Criado 15 de março de 2012
Ultima resposta 16 de mar. de 2012
Respostas 1
Participantes 2