@Override
	protected boolean validate(JComponent input) {
		if (!(input instanceof JFormattedTextField)) {
			return true;
		}

		JFormattedTextField field = JFormattedTextField.class.cast(input);
		AbstractFormatter formatter = field.getFormatter();
		if (formatter == null) {
			return true;
		}

		String text = field.getText();
		try {
			T value = valueClass.cast(formatter.stringToValue(text));
			if (minimum != null && minimum.compareTo(value) > 0) {
				return false;
			}
			if (maximum != null && maximum.compareTo(value) < 0) {
				return false;
			}
			return true;
		} catch (ClassCastException e) {
			return true;
		} catch (ParseException e) {
			return false;
		}
	}