import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JFormattedTextField;
import javax.swing.text.DefaultFormatterFactory;
import java.text.SimpleDateFormat;
import javax.swing.text.DateFormatter;
import java.text.DateFormat;
import java.util.Date;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class JFormattedTextProblem
{
  public JFormattedTextProblem()
  {
  }
  public static void main(String[] args)
  {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    panel.add(new JLabel("Nothing: "));
    panel.add(new JTextField("Focus Starts Here."));

    DateFormat displayDate = DateFormat.getDateInstance(DateFormat.MEDIUM);
    DateFormat editDate = DateFormat.getDateInstance(DateFormat.SHORT);

    JFormattedTextField dateField = new JFormattedTextField();
    dateField.setFormatterFactory(new DefaultFormatterFactory(new DateFormatter(editDate),new DateFormatter(displayDate),new DateFormatter(editDate)));

    panel.add(new JLabel("Date: "));
    panel.add(dateField);


    DateFormat displayTime = DateFormat.getTimeInstance(DateFormat.MEDIUM);
    SimpleDateFormat editTime = new SimpleDateFormat("HH:mm");

    JFormattedTextField timeField = new JFormattedTextField();
    timeField.setFormatterFactory(new DefaultFormatterFactory(new DateFormatter(editTime),new DateFormatter(displayTime),new DateFormatter(editTime)));

    panel.add(new JLabel("Time: "));
    panel.add(timeField);

    dateField.setText(displayDate.format(new Date()));
    timeField.setText(displayTime.format(new Date()));

    frame.getContentPane().add(panel);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.show();

  }
}
