Java Swing How to - Create custom format for Date Time value in Formattedtextfield








Question

We would like to know how to create custom format for Date Time value in Formattedtextfield.

Answer

import java.awt.BorderLayout;
import java.text.SimpleDateFormat;
import java.util.Date;
/*from   w  w w.jav  a2s .  co  m*/
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.text.MaskFormatter;

public class Main extends JPanel {

  private JFormattedTextField formatText;

  public Main() {
    Date date = new Date();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String dateString = formatter.format(date);
    formatText = new JFormattedTextField(createFormatter("####-##-## ##:##:##"));
    formatText.setColumns(20);
    formatText.setText(dateString);

    setLayout(new BorderLayout());
    add(new JLabel("Enter Date and Time in YYYY-MM-DD HH:MM:SS format"),
        BorderLayout.NORTH);
    add(formatText, BorderLayout.CENTER);
  }
  private MaskFormatter createFormatter(String s) {
    MaskFormatter formatter = null;
    try {
      formatter = new MaskFormatter(s);
    } catch (java.text.ParseException exc) {
      System.err.println("formatter is bad: " + exc.getMessage());
    }
    return formatter;
  }
  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.add(new Main());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }
}