Ir para conteúdo

Arquivado

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

zetaec

Ordenar Tabela pelo clique no Título da Coluna

Recommended Posts

Quero capturar o clique no Título da coluna da tabela e assim ordenar os dados que vem do banco.

No meu caso a coluna 1 é o Nome, então tenho uma função ordbdq(string) que manda o comando de  ordenar pelo nome para o banco. Capturo o clique do mouse em um evento MouseClicked que chama a função ordenar, onde na mesma esta contido o código abaixo.

 

       int coluna = jtpessoas.getSelectedColumn();
        
        switch(coluna) {
            case 1:
                ordbdq("select * from pessoas order by nome asc;");
                break;
            case 2:
                ordbdq("select * from pessoas order by nascimento asc;");
                break;
            case 3:
                ordbdq("select * from pessoas order by sexo asc;");
                
                        
            }

 

O problema é que se eu clicar em qualquer linha da coluna ele muda a ordem, se eu clicar na coluna 1 na linha 20 ele muda a ordem da tabela, eu só queria que ele mudasse a ordem se eu clicasse no Título da coluna, no NOME, DATA de NASCIMENTO, etc. Como na foto abaixo.

 

help.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazendo da seguinte forma:

 

boolean teste = false;
    public void teste() {
        if (teste == false) {
            ordbdq("select * from pessoas order by " + nome + " desc;");
            teste = true;
        } 
        else {
            ordbdq("select * from pessoas order by " + nome + " asc;");
            teste = false;                    
        }    
    }
    

jtpessoas.getTableHeader().addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                col = jtpessoas.columnAtPoint(e.getPoint()); 
                switch(col) {
                    case 1:
                        nome = "rg";
                        teste();
                        break;
                    case 2:
                        nome = "nome";
                        teste();
                        break;
                    case 3:
                        nome = "nascimento";
                        teste();
                        break;
                    case 4:
                        nome = "sexo";
                        teste();
                        break;
                    case 5:
                        nome = "estadocivil";
                        teste();
                        break;
                }
            }
        }); 
        

    Assim eu tenho o efeito desejado, igual quando clicamos na maioria dos exploradores de arquivos (um clique em Nome e os elementos são ordenados em ordem crescente pelo nome, outro clique e é ordenando em ordem decrescente, e assim com os outros tipos da coluna, data, tipo de arquivo, etc).
    
 

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.