Abrir jFrame com 2 cliques rápidos

7 respostas
capelari1337

Bom dia galera, tenho uma jTable que exibe algumas linhas de cadastro, atualmente ao clicar duas vezes seguidas em alguma linha, é aberto uma tela com mais informações sobre o cadastro… o problema é que não existe um tempo definido entre os intervalos de cliques, ou seja, os cliques podem ter uma diferença de 30 minutos e ainda assim irá abrir uma nova janela. Gostaria que esse tempo de um clique para outro fosse limitado em aproximadamente 1 segundo, alguém já passou por uma situação parecida e saberia me ajudar ? não achei material relativo pesquisando no google…

7 Respostas

FearX

Ao invés de comparar se ele recebe dois cliques separados (ou seja, evento de click + evento de click), identifique um clique duplo. No JavaScript isso é bem fácil, acho que no Java isso aqui pode te ajudar (mais especificamente a terceira resposta que inclui um Timer).

staroski

O MouseEvent possui um método getClickCount(), aí é só você abrir a janela quando o getClickCount() for igual a 2.

capelari1337

Valeu pela ajuda galera! consegui resolver, não sei se da maneira correta, mas usando a diferença de segundos do primeiro para o segundo clique, assim se for menor que 1, abre a janela. Obrigado a todos.

FearX

Posta o trecho de código que você usou para ajudar as futuras gerações que aqui virão procurar por ajuda (:

capelari1337
int tprox = 0,tatual = 0;
int seg1,seg2;
private void jTableMouseClicked(java.awt.event.MouseEvent evt) {                                           
      Calendar data = Calendar.getInstance();
      if(t==1){
          tatual=Integer.parseInt(String.valueOf(jTable.getValueAt(jTable.getSelectedRow(),0)));
          seg1=data.get(Calendar.SECOND);
          t++;
       }else{
            tprox=Integer.parseInt(String.valueOf(jTable.getValueAt(jTable.getSelectedRow(),0)));
            t=1;
            if(tatual==tprox){ 
                seg2=data.get(Calendar.SECOND);
                if(seg2-seg1<1)    
                     //evento ocorre aqui..
                }
            }else{
                 tprox=-1;
            }
        }
         
}
staroski

Isso tudo pode ser substituído por:

private void jTableMouseClicked(java.awt.event.MouseEvent evt) {                                           
    if (evt.getClickCount() == 2) {
        //evento ocorre aqui..
    } 
}
FearX

Exato, por isso perguntei sobre o código dele :slight_smile:

Criado 16 de outubro de 2018
Ultima resposta 16 de out. de 2018
Respostas 7
Participantes 3