Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

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);
    }
}