PDA

View Full Version : [JAVA-GWT] Blocco caratteri durante la digitazione


roby1483
07-07-2008, 18:53
Salve a tutti,
vengo subito al sodo. Sto' realizzando un'applicazione con GWT e ho bisogno che in una textbox vengano accettati solo valori esadecimali (la codifica di un colore). Come posso fare per far si che se nella casella di testo schiaccio la "z" ad esempio questa non venga presa come input?
Ho tentato con il seguente codice ma non ha prodotto risultati utili, ergo, il carattere viene inserito nella textbox prima che mi venga notificato l'evento?

@Override
public void onKeyDown(Widget sender, char keyCode, int modifiers) {
if ((keyCode>=48 && keyCode<=57) || (keyCode>=65 && keyCode<=70) || (keyCode>=97 && keyCode<=102))
super.onKeyDown(sender, keyCode, modifiers);
}

Grazie a tutti.

Don[ITA]
08-07-2008, 09:31
Non sò come funzioni GWT ma in swing io faccio cosi:

(questo vale solo per accettare i numeri ma puoi modificarlo a tuo piacimento in modo da accettare quello che vuoi)

import javax.swing.text.*;

public class TextLimitDocument extends PlainDocument {

@Override
public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
if (str == null)
return;
if (!str.matches("[0-9]*"))
return;
super.insertString(offset, str, attr);
}

}


E poi nel textfield faccio:

JTextField text = new JTextField();
text.setDocument(new TextLimitDocument());


Basta che modifichi la scritta in rosso con una regEx che matchi numeri in esadecimale ;)

roby1483
08-07-2008, 10:21
Grazie mille ma alla fine la soluzione era piu' semplice di quello che credevo :D

@Override
public void onKeyDown(Widget sender, char keyCode, int modifiers) {
if (keyCode != KEY_BACKSPACE && keyCode != KEY_DELETE)
if (!(keyCode>=48 && keyCode<=57) && !(keyCode>=65 && keyCode<=70) && !(keyCode>=97 && keyCode<=102))
((TextBox)sender).cancelKey();
}