Cronometro comando long start com interface swing;[RESOLVIDO]

Boa noite pessoal,
estou tentando implementar um cronometro, que irá conter o tempo de uma “ligacao”. em um “celular” criado em java com interface swing.
Entao to usando o comando

long start = System.currentTimeMillis();

quando o usuário clica em “ligar”,
o comando

long finish = System.currentTimeMillis();     
		long total = finish - start;

quando ele clica em "finalizar ligacao, ou seja os 2 comandos estao em funcoes diferentes.
E finalmente o comando q diminui o final do inicial.
E estou chamando isso em um

JOptionPane.showMessageDialog(null, "Foram feitas " + numeroTotalLigacoes + " Ligações" + "Totalizando" + total + " minutos"); .

não esta funcionando, alguem pode me ajudar?

Onde vc está declarando as variáveis?

Pode postar os dois métodos inteiros onde elas são usadas?

A lógica em si está certa.

Obrigado pela resposta vini, ja consegui!

E qual era o erro mesmo?

Funcionou usando

System.nanoTime();

com o currentTimeMillis, ele estava retornando sempre o mesmo valor.
E usando o tipo Long para somar nao estava dando certo, ele somente mostrava 1 valor.
Entao usei o nano, e somei os resultados com int, dai deu tudo certo.

Hummm… ainda está parecendo errado, pois esse tipo de coisa tem que funcionar com o currentTimeMillis() também.

O nano time só dará uma proximação melhor para comandos que rodem muito consecutivamente.

Você tem certeza que o start está sendo gravado num atributo, que foi declarado fora da função inicial? Por que o valor deve deve ser mantido até que a o finish seja calculado, e ele não pode ser redeclarado na função finish.

Sim, fiz todas as declarações fora da função. Inclusive o iniciar.