Não sei como está o seu código, mas é perfeitamente possível ordenar por data e mostrar as datas formatadas. Como não temos o seu código, vou colocar uma classe de exemplo:
public class User {
private String nome;
private Date dataNascimento;
public User(String nome, Date dataNascimento) {
this.nome = nome;
this.dataNascimento = dataNascimento;
}
public String getNome() {
return nome;
}
public Date getDataNascimento() {
return dataNascimento;
}
}
Em seguida, criamos uma lista de usuários:
// método auxiliar para criar um Date específico
static Date criarDataNasc(int dia, int mes, int ano) {
Calendar c = Calendar.getInstance();
c.set(ano, mes - 1, dia, 0, 0, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
...
List<User> users = new ArrayList<>();
users.add(new User("Fulano", criarDataNasc(10, 1, 1980)));
users.add(new User("Ciclano", criarDataNasc(20, 11, 1970)));
users.add(new User("Beltrano", criarDataNasc(15, 4, 2000)));
users.add(new User("Trajano", criarDataNasc(19, 7, 2010)));
Para ordenar os User
's por data, basta usar um java.util.Comparator
:
users.sort(new Comparator<User>() {
@Override
public int compare(User u1, User u2) {
// comparar 2 Users pela data de nascimento
return u1.getDataNascimento().compareTo(u2.getDataNascimento());
}
});
// ou, a partir do Java 8, pode ser usada a sintaxe de lambda
users.sort((u1, u2) -> u1.getDataNascimento().compareTo(u2.getDataNascimento()));
// ou ainda method reference
users.sort(Comparator.comparing(User::getDataNascimento));
Agora a lista está ordenada pela data de nascimento dos usuários, então eu posso imprimi-los e escolher o formato em que quero as datas:
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
for (User user : users) {
System.out.println(user.getNome() + " nasceu em " + formato.format(user.getDataNascimento()));
}
Pronto! A saída é:
Ciclano nasceu em 20/11/1970
Fulano nasceu em 10/01/1980
Beltrano nasceu em 15/04/2000
Trajano nasceu em 19/07/2010
Veja como as coisas ficam separadas:
- ao manipular os dados (ou seja, criar o
User
, colocar na lista, ordenar) eu sempre trabalho com o Date
- ao exibir os dados, eu escolho o formato que quero e gero as strings correspondentes (com o método
format
)
De maneira similar, você faria o mesmo na sua aplicação: ao ler do banco, guardar na lista, etc, você só trabalha com Date
. Somente na hora de exibir os dados é que você formata.
Não tem segredo, em qualquer código que for mexer com datas, a ideia é a mesma. Infelizmente faz muito tempo que não mexo com JTable
e não sei se tem alguma configuração específica para isso, mas não acho que seja um “bug” ou algo assim. Provavelmente é algum detalhe no seu código mesmo…