Java tutorial
import java.awt.GridLayout; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.JButton; import javax.swing.JFormattedTextField; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.text.MaskFormatter; public class Main { public static void main(String[] args) throws Exception { final MaskFormatter formatter = new TimeFormatter(); formatter.setValueClass(java.util.Date.class); final JFormattedTextField tf2 = new JFormattedTextField(formatter); tf2.setValue(new Date()); final JLabel label = new JLabel(); JButton bt = new JButton("Show Value"); bt.addActionListener(e -> { System.out.println(" value 2 = " + tf2.getValue()); System.out.println(" value 2 = " + tf2.getText()); System.out.println("value class: " + formatter.getValueClass()); label.setText(tf2.getText()); }); JFrame f = new JFrame(); f.getContentPane().setLayout(new GridLayout()); f.getContentPane().add(tf2); f.getContentPane().add(label); f.getContentPane().add(bt); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.pack(); f.setVisible(true); } } class TimeFormatter extends MaskFormatter { public TimeFormatter() { try { setMask("##/##/####"); setPlaceholderCharacter('0'); setAllowsInvalid(false); setOverwriteMode(true); } catch (ParseException e) { e.printStackTrace(); } } @Override public Object stringToValue(String string) throws ParseException { SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy"); if (string == null) { string = "00/00/0000"; } return df.parse(string); } @Override public String valueToString(Object value) throws ParseException { SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy"); if (value == null) { value = new Date(0); } return df.format((Date) value); } }