JXDatePicker - Modo de edição

5 respostas
G

Estou ultilizando o componente JXDatePicker na minha aplicação para seleção de data porém no modo de edição quando retorno uma data do banco ele seta pra mim a data atual GMT. Já fiz a formatação “dd/MM/yyy” e também converti para tipo date. Alguem sabe dizer se existe alguma propriedade do componente ou então outro método que insira a data correta conforme está no banco de dados. Estou ultilizando o metodo .setDate(data).

obrigado
Guilherme

5 Respostas

A

Bom dia Guilherme…

Bom iniciei o trabalho com o JXDatePicker a pouco tempo, porém espero ajudar com esse pouco conhecimento.
Estou desenvolvendo uma aplicação que utiliza a data pega com JXDatePicker e grava a data em uma base MySQL, para isso criei uma rotina para converter a data do formato GMT (quando vc dá um getDate) para o formato do banco.
O que precisa fazer e o seguinte.
Pegar a data no formato GMT e converter para o formato em que seu banco trabalha. Eu fiz dessa forma:

public String formDataJava(Date data){
        /* Função para formatação do campo DATE do JAVA converte o valor default
         * para dd/MM/yyyy utilizado nos campos jxDate do SwingX
         */
        //Define o formato da data 
        SimpleDateFormat dataFormatada = new SimpleDateFormat("dd/MM/yyyy");
        return dataFormatada.format(data);//Retorna a data formatada 
    }

No formato da data “SimpleDateFormate” você pode alterar o formato de “dd/MM/yyyy” para outro formato desejado.

Espero ter colaborado.

Abraços

G

Andrei,
A parte da inserção no banco (captura atraves do getDate) já consegui implemetar normalmente. A dúvida é referente ao modo de visualização de uma data diferente da atual. Por exemplo a data de nascimento que está gravada no banco por exemplo 01-01-1981 quando dou um setDate ele está informando como valor a data atual, ou seja não está validando minha data retornanda do banco no componente . Estou usando postgresql.

obrigado
Guilherme

A

Opa Guilherme!
Deixa eu ver se entendi…
pegando a data do JxDatePicker já está oks.
Convertendo a data do formato

Data padrão JXDATEPICKER (getDate) vem = Tue Nov 18 00:00:00 GMT-03:00 2008
Data convertida para formato “dd/MM/yyyy” = 18/11/2008 (cfme exemplo anterior)
Data de dd/mm/yyyy para formato Date = Tue Nov 18 00:00:00 GMT-03:00 2008 (vou dar meu exemplo abaixo)

Então para que o JXDatePicker exiba a data que vem do banco vc deve converter a data de 01-01-1981 para o formato:
Thu Jan 01 00:00:00 GMT-03:00 1981

Ai quando der um setDate vc irá passar esse formato (Date) ao invés de String.

Tenta assim:
“Essa foi a forma que fiz para converter a data String para o formato Date com certeza existem formas melhores de se fazer…”

public Date formDataStrgToJava(String data){
        /* Função de conversão de uma data do tipo STRING dd-MM-yyyy para formato
         * date do java.util
         */        
        DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");//Formato da data que virá do banco
        Date date = null;  
        try {
            date = (Date) formatter.parse(data);//convertendo o formato para Date
        } catch (ParseException ex) {
            System.out.println(ex);
        }
        return date;
    }

ai vc passa o date para JxDatePicker.

jxdatePicker.setDate(formDataStrgToJava("01-01-1981"));

Espero que tenha ajudado :slight_smile:

Qualquer coisa é só avisar…
Abraços!

G

Andrei,
Foi mais fácil que imaginava… a formatação é feita diretamente pelo componente com o método: setFormats(new String [] {“dd/MM/yyyy”}). Ai eu posso passar a data direta retornada do banco do tipo Date “yyyy-MM-dd” que ele trata do resto.

obrigado
Guilherme

R

Cara tenta assim:

//Captura data do banco e converte para o formato dd/MM/yyyy

String auxData = aux.getData();

Date data = null;

try {

data = new SimpleDateFormat(yyyy-MM-dd).parse(auxData);

} catch (ParseException ex) {

Logger.getLogger(JInternalFrame.class.getName()).log(Level.SEVERE, null, ex);

}

String dataQueVemDoBanco = new SimpleDateFormat(dd/MM/yyyy).format(data);
// Converte a data de String para Date
        Date auxData01 = null;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/mm/yyyy");
        try {
            auxData01 = simpleDateFormat.parse(dataQueVemDoBanco );
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // Seta a data convertida para o componete JXDatePicker
        getJXDatePicker().setDate(auxData01);

Falow.

Criado 18 de novembro de 2008
Ultima resposta 10 de out. de 2009
Respostas 5
Participantes 3