use DocumentFilter to add validation:
final JFormattedTextField startDateField = ...;
JFormattedTextField endDateField = ...;
((AbstractDocument)endDateField.getDocument()).setDocumentFilter(new DocumentFilter(){
    @Override
    public void remove(FilterBypass fb, int offset, int length) throws BadLocationException{
        StringBuilder content = new StringBuilder(fb.getDocument().getText(0, fb.getDocument().getLength()));
        content.replace(offset, offset + length, "");
        if(isValidEndDate(content.toString()))
            super.remove(fb, offset, length);
    }
    @Override
    public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException{
        StringBuilder content = new StringBuilder(fb.getDocument().getText(0, fb.getDocument().getLength()));
        content.insert(offset, string);
        if(isValidEndDate(content.toString()))
            super.insertString(fb, offset, string, attr);
    }
    @Override
    public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException{
        StringBuilder content = new StringBuilder(fb.getDocument().getText(0, fb.getDocument().getLength()));
        content.replace(offset, offset + length, text);
        if(isValidEndDate(content.toString()))
            super.replace(fb, offset, length, text, attrs);
    }
    boolean isValidEndDate(String endDate){
        //check whether endDate is <= startDateField.getText()
    }
});