Abrir jFrame com 2 cliques rápidos

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…

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).

1 curtida

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

1 curtida

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.

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

1 curtida
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;
            }
        }
         
}

Isso tudo pode ser substituído por:

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

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

1 curtida