mit einem regulären Ausdruck Formatierer JFormattedTextField?
-
19-09-2019 - |
Frage
Nach viel Frust mit einem JFormattedTextField zur Arbeit mit meinen benutzerdefinierten Formaten bekommen, ich habe mich gefragt, ob es eine Formatter
oder FormatterFactory
war, dass Verwendungen reguläre Ausdrücke?
Meine Idee ist, dass, wenn es einen gibt, dann könnte ich es in einer statischen Klasse wickeln und rufen Sie es wie folgt:
mFormattedTextField.setFormatterFactory(
SomeStaticClass.getRegexFormatFactory("^(\\d{1,}h)(\\s([0-5])?[0-9]m)?$"));
Sehen Sie meine vorherige Frage für mehr Hintergrund:
" Ich möchte ein JFormattedTextField verwenden, um den Benutzer zur Eingabe von Zeitdauerwerte in eine Form zu ermöglichen Muster gültige Werte sind:. 2h 30m
72h 15m
6h
0h
"
Lösung
Haben Sie diesem Artikel lesen? Für den Fall, dass Link verrottet weg, sagt es alles, was Sie wirklich überschreiben AbstractFormatter der stringToValue
Methode müssen tun, wie folgt aus:
public Object stringToValue(String text) throws ParseException {
Pattern pattern = getPattern();
if (pattern != null) {
Matcher matcher = pattern.matcher(text);
if (matcher.matches()) {
return super.stringToValue(text);
}
throw new ParseException("Pattern did not match", 0);
}
return text;
}
Eigentlich eine schnelle Suche liefert mehr voll umgesetzt, freie Lösungen; war keiner von denen, die ausreichen, um Ihre Bedürfnisse?