Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date
at GUI.FrmAluno.atualizaTextArea(FrmAluno.java:330)
String matricula = (String) jTable1.getModel().getValueAt(linhaSelecionada, 0);
String nome = (String) jTable1.getModel().getValueAt(linhaSelecionada, 1);
Date dtnascimento = (Date) jTable1.getModel().getValueAt(linhaSelecionada, 2); // LINHA 330 - NESTA LINHA
Você não pode converter (casting) de um tipo diretamente para outro. A única exceção a isso são classes com herança e entre tipos primitivos numerais. Exemplo:
double valorDouble = 3.14;
int valorInteiro = (int) valorDouble;
O código acima funciona. Mas, no seu caso, você quer converter de um String para um Date. O casting não funciona assim. Para fazer o que você quer, tem que usar uma classe que faça essa conversão.
Mais simples que isso, impossível. O próprio erro te diz o que está ocorrendo, em outras palavras “não posso converter um tipo String para um tipo Date”.
Você tem que fazer a conversão “manualmente”, ou seja, em código.
Isso: jTable1.getModel().getValueAt(linhaSelecionada, 2) retorna uma String e não um Date
Veja se consegue entender, você precisa converter duas vezes, a primeira o format é do mesmo tipo que esta recebendo e a segunda do tipo que quer que fique.
public static void main(String[] args) throws ParseException {
String data1 = "2013-01-01";
DateFormat dfOne = new SimpleDateFormat("yyyy-MM-dd");
DateFormat dfTwo = new SimpleDateFormat("dd/MM/yyyy");
Date date2 = dfOne.parse(data1);
String finalDate = dfTwo.format(date2);
System.out.println(finalDate);
}