Utilizzando l'editor di NetBeans GUI, come posso creare un campo JTextField o JFormattedText che deve essere convalidato rispetto un'espressione regolare?
-
21-09-2019 - |
Domanda
Ho un espressione regolare (\d{4}\w{3}(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]){2}
) che ho bisogno di validare l'input di un campo di testo contro quando l'utente fa clic sul pulsante OK o si sposta il cursore su un altro campo. Che io so come fare, scrivere il codice. Tuttavia, mi interessa se è possibile avere il NetBeans GUI editor di fare un po 'di lavoro per me, soprattutto perché mi sto muovendo da Eclipse e NetBeans verso il mio IDE di scelta, e mi piacerebbe sfruttare al massimo degli strumenti che essa fornisce.
Soluzione
Aprire le proprietà della JTextField, nella scheda aspetto proprietà per inputVerifier. Aprilo
Ora ti verrà chiesto di introdurre il codice InputVerifier.
ftf2.setInputVerifier(new InputVerifier() {
public boolean verifyText(String textToVerify) {
Pattern p = Pattern.compile("your regexp");
Matcher m = p.matcher(textToVerify);
if (m.matches()) {
setComponentValue(textToVerify);
return true;
}
else {
return false;
}
}
});
Non ho compilato questo codice, in modo da poter contenere degli errori. Ma penso che si ottiene l'idea;)
Altri suggerimenti
Questa non è la soluzione più semplice, ma è molto potente: prova a primavera rich client , dove convalida potrebbe essere raggiunto attraverso:
public class Validation extends DefaultRulesSource {
private Constraint NAME_VALIDATION = all(new Constraint[]{minLength(3), required()});
public void load() {
addRules(new Rules(Person.class) {
@Override
protected void initRules() {
add("name", NAME_VALIDATION);
}
});
...
e il modulo di interfaccia grafica è facilmente creato tramite:
TableFormBuilder formBuilder = getFormBuilder();
formBuilder.add("firstName");
formBuilder.add("name");
formBuilder.row();
es. guardare qui per la convalida o di qui per maggiori informazioni . Sto usando questo con successo nel mio progetto open source ...
In questo modo si potrebbe creare un componente più generale oscillazione che potrebbe essere aggiunta alle href="http://wiki.netbeans.org/FaqFormUsingCustomComponent" tavolozza componente