Home / Programmazione / Java / Testo in maiuscolo in una JTextField
Mattepuffo

Testo in maiuscolo in una JTextField

Testo in maiuscolo in una JTextField

Quello che vediamo oggi è come impostare il testo maiuscolo automaticamente in una JTextField.

In pratica dentro alla nostra casella di testo potremmo scrivere solo in maiuscolo.

Per prima cosa dobbiamo creare una classe apposita, che estenda DocumentFilter.

In breve, DocumentFilter è in grado di modicare il contenuto di un Document.

Questa la classe:

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;

public class UppercaseFilter extends DocumentFilter {

    @Override
    public void insertString(DocumentFilter.FilterBypass fb, int offset, String text, AttributeSet attr) throws BadLocationException {
        fb.insertString(offset, text.toUpperCase(), attr);
    }

    @Override
    public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
        fb.replace(offset, length, text.toUpperCase(), attrs);
    }
}

Il metodo insertString viene invocato prima dell'inserimento del testo.

Invece il metodo replace viene richiamato prima della sostituzione.

A questo punto dobbiamo impostare la JTextField, e lo facciamo nel costruttore del nostro JFrame:

((AbstractDocument) myTxtField.getDocument()).setDocumentFilter(new UppercaseFilter());

E' sufficiente questa riga.

In pratica abbiamo impostato il metodo setDocumentFilter richiamando la nostra classe.

Ciao!