Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347

    Settaggio JTextField per inserire unico carattere

    come faccio a settare un text field in modo che si possa inserire un unico carattere??

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    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.

    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);
        }
    }
    Quindi assegnerai come Document di JTextField un'istanza di tale classe.

    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    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

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Succede che non lo inserisce.

    Scrivo anche il codice da usare per settare il document:

    codice:
    JTextField txt = new JTextField( ... );
    txt.setDocument( new OneCharPlainDocument() );
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    ok, quindi lascia il carattere inserito in precedenza?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da John360
    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().


    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    sisi avevi capito bene infatti! Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.