Mettre en majuscule la première lettre d’un JTextField – Java

Pour transformer la première lettre d’un 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 la première lettre d’un JTextField en majuscules, nous utilisons la méthode toUpperCase().
 
 

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 {
           if (fb.getDocument().getLength() == 0) {
               StringBuilder sb = new StringBuilder(text);
               sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
               text = sb.toString();
           }
           fb.insertString(offset, text, attr);
        }

        @Override
        public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
           if (fb.getDocument().getLength() == 0) {
               StringBuilder sb = new StringBuilder(text);
               sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
               text = sb.toString();
           }
           fb.replace(offset, length, text, attrs);
        }
    }
}

Sortie:

 

Partagez cet article

Laisser un commentaire

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