Convert String from a JTextField to Calendar

5

How to perform input conversion through Swing's JTextField via JDBC?

public class DadosPessoais {

    private Calendar dataNascimento;

    public Calendar getDataNascimento() {
        return dataNascimento;
    }
    public void setDataNascimento(Calendar dataNascimento) {
        this.dataNascimento = dataNascimento;
    }
}

Screen class:

public class DadosPessoaisForm extends JFrame{

private JLabel jlDataNascimento;
    //private JTextField jtfDataNascimento;
    private JButton jbSave,jbUpdate;
    private JFormattedTextField jftfDataNascimento;
    private MaskFormatter mfDataNascimento;

try {
        mfDataNascimento = new MaskFormatter("##/##/####");
        mfDataNascimento.setPlaceholderCharacter('_');
    } catch (ParseException e) {
        e.printStackTrace();
    }
    jftfDataNascimento = new JFormattedTextField(mfDataNascimento);

    //

    jbSave = new JButton("Salvar");
    jbUpdate = new JButton("Editar");

    jbSave.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                onSaveDadosPessoais();
            }
        });
    jbUpdate.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                onUpdateDadosPessoais();
            }
        });

    private void onSaveDadosPessoais(){
        DadosPessoais dadosPessoais = new DadosPessoais();

        //

        dadosPessoais.setDataNascimento(Calendar.getInstance());

        //

    }

    private void onUpdateDadosPessoais() {
        DadosPessoais dadosPessoais = new DadosPessoais();

        //

        jtfDataNascimento.setText(dadosPessoais.getDataNascimento());

        //
    }
}

DAO Class:

public class DadosPessoaisDAO{

    public int save(DadosPessoais dadosPessoais){

        //

        stmt.setDate(5, (new Date(pessoaDadosPessoais.getDataNascimento().getTimeInMillis())));

        //
    }

}
    
asked by anonymous 12.06.2016 / 03:30

1 answer

1

Just get the String of your JFormattedTextField , and parse using SimpleDateFormat :

String strData = jftfDataNascimento.getText();
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
cal.setTime(sdf.parse(strData));

If you need to move to your class DadosPessoais :

dadosPessoais.setDataNascimento(cal);

And then to save on the bank:

stmt.setDate(5, (new java.sql.Date(dadosPessoais.getDataNascimento().getTimeInMillis())));
  

One must be careful because there are two classes Date: one belongs to   java.util package and another one belongs to the java.sql package, used by JDBC.

However, it is recommended that you adapt to the classes of the package java.time of , especially if at some point in the future you intend to perform operations between dates. Among the links below are several examples of using these classes, as well as an explanation of why not use the Date and Calendar classes .

References:

How do I migrate from Date and Calendar to the new date API in Java 8?

Convert String to Calendar Object in Java

Difference between Date, sql.Date, and Calendar

Problems comparing dates with Calendar

Date difference with calendar in a TextField

    
12.06.2016 / 18:52