Ecrire en majuscules dans un JTextField

Pour changer le texte de JTextField en majuscules, vous pouvez facilement le faire en ajoutant un DocumentFilter au composant JTextField à l’aide de la méthode setDocumentFilter(). DocumentFilter nous permet de filtrer l’action pour les modifications du document telles que l’insertion, la modification et la suppression.


Pour convertir une chaîne de caractères en majuscule, nous utilisons la méthode toUpperCase(). Pour la transformer en minuscule utilisez la méthode toLowerCase().
 
 

Exemple:
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;

public class MajTextField extends JFrame 
{
    public MajTextField()
    {
        getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));

        JTextField texte = new JTextField();
        texte.setPreferredSize(new Dimension(180, 20));

        DocumentFilter f = new UppercaseJTextField();
        AbstractDocument doc = (AbstractDocument) texte.getDocument();
        doc.setDocumentFilter(f);

        getContentPane().add(new JLabel("Entrez un texte: "));
        getContentPane().add(texte);
        setSize(300, 70);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new MajTextField().setVisible(true));
    }

    class UppercaseJTextField 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);
        }
    }
}

Sortie:

 

Partagez cet article

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *