come faccio a settare un text field in modo che si possa inserire un unico carattere??
come faccio a settare un text field in modo che si possa inserire un unico carattere??
Devi creare un custom Document (estendendo da PlainDocument), fare l'override del metodo insertString() in modo che effettui l'inserimento se e solo se la lunghezza della stringa finora inserita è 0. Quindi, assegnare questo custom Document alla JTextField.
Quindi assegnerai come Document di JTextField un'istanza di tale classe.codice:class OneCharPlainDocument extends PlainDocument { public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { if (str == null || "".equals(str)) { return; } str = str.substring(0, 1); if (getLength() > 0) { // Non aggiungiamo nulla str = ""; } super.insertString(offs, str, a); } }
E' un esempio scritto al volo... non l'ho verificato.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
siccome non ho mai lavorato con i document mi spiegheresti un po meglio che fa? cioè: se io inserisco un carattere, la tua classe lo inserisce e basta, ma se poi provo ad inserire il secondo che succede? grazie comunque![]()
Succede che non lo inserisce.
Scrivo anche il codice da usare per settare il document:
Ciao.codice:JTextField txt = new JTextField( ... ); txt.setDocument( new OneCharPlainDocument() );![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
ok, quindi lascia il carattere inserito in precedenza?
Sì, io l'avevo capita così, ovvero che ti interessava una JTextField che accetta al massimo un carattere... se a te serve che venga sostituito il carattere presente in caso di digitazioni successive, basta che ti comporti di conseguenza nel metodo insertString().Originariamente inviato da John360
ok, quindi lascia il carattere inserito in precedenza?
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
sisi avevi capito bene infatti! Grazie![]()