2016-08-08 30 views

Antwort

1

Sie einen TextFormatter verwenden können annehmen oder ablehnen Änderungen:

TextArea ta = new TextArea(); 
final Pattern binary = Pattern.compile("^[01]*$"); 
final Predicate<String> tester = binary.asPredicate(); 
ta.setTextFormatter(new TextFormatter<>(change -> { 
    if (!tester.test(change.getControlNewText())) { 
     return null; 
    } 
    return change; 
})); 
+0

Beachten Sie, dass dies nur eine einzige Zeile erlaubt. Wenn Sie mehrere Zeilen zulassen möchten, müssten Sie den regulären Ausdruck ändern (etwas wie 'final Pattern binary = Pattern.compile (" \\ A [01 \\ n] * \\ Z ");' sollte funktionieren). – Itai

+0

yup aber ich denke, da die TextArea wird nur halten 01 '[01] +' kann gut funktionieren – Mak

+0

Das würde bedeuten, dass der Benutzer die TextArea jedoch nicht löschen kann. Wenn das in Ordnung ist, dann ist "[01] +" gut, aber normalerweise ist es wünschenswert, eine vollständig leere Eingabe zuzulassen. – Itai