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).
O MouseEvent possui um método getClickCount(), aí é só você abrir a janela quando o getClickCount() for igual a 2.
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 (:
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..
}
}
Exato, por isso perguntei sobre o código dele 