Galera consegui fazer um código muito simples e funciona perfeitamente, segue abaixo:
public int calculaIdade(String dt_nasc) {
// Data de hoje.
GregorianCalendar hoje = new GregorianCalendar();
int diah = hoje.get(Calendar.DAY_OF_MONTH);
int mesh = hoje.get(Calendar.MONTH) + 1;
int anoh = hoje.get(Calendar.YEAR);
// Data do nascimento.
int dian = Integer.valueOf(dt_nasc.substring(0,2));
int mesn = Integer.valueOf(dt_nasc.substring(3,5));
int anon = Integer.valueOf(dt_nasc.substring(6,10));
// Idade.
int idade;
if (mesn < mesh || (mesn == mesh && dian <= diah))
idade = anoh - anon;
else
idade = (anoh - anon)-1;
return (idade);
}
Estava com a mesma dúvida, e observei bem, e vi que é mais simples que eu imaginava.
Segue abaixo minha lógica. Está funcionando perfeitamente. Espero que ajude.
AQUI EU CHAMO A FUNÇÃO
if(aluno.get("DataNascimento") != null){ // essa linha é que pego a data de nascimento do banco no formato yyyy-MM-dd
String DataAniversario = (String) (aluno.get("DataNascimento"));
DataAniversario.replace("-", "/");
System.out.println(DataAniversario);
String Idade = CalcularIdade.CalculaIdade(
Integer.parseInt((DataAniversario.substring(8,10))),//ano
Integer.parseInt((DataAniversario.substring(5,7))), //mês
Integer.parseInt((DataAniversario.substring(0,4))));//dia
jTextFieldDadosPrimariosIdadeAluno.setText(Idade);
}
AQUI É A FUNÇÃO QUE RESOLVE A CONTA DA IDADE
package ClassesUtilitarias;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalcularIdade {
public static String CalculaIdade(int Dia, int Mes, int Ano){
Calendar cal = GregorianCalendar.getInstance();
int anoAtual = cal.get(Calendar.YEAR);
int Idade = anoAtual - Ano;//Calcula a idade apenas com os anos
int diaAtual = cal.get(Calendar.DAY_OF_MONTH);
int mesAtual = cal.get(Calendar.MONTH);
if(Dia >= diaAtual && Mes >= mesAtual){
Idade--;
}
return String.valueOf(Idade);
}
}