jTextField . toUpperCase()

Boa noite,
Estou com alguns problemas com relação a deixar o texto em UpperCase, estou utilizando o Event.KeyListener para transformar o texto digitado em Upper, mas é meio “Bugante” entrar com os dados dessa forma, é desagradável visualmente, alguém sabe me dizer se tem outra solução melhor? não encontrei nada na internet.

coloca o UpperCase na hora de salvar então, assim o usuário só vai reparar quando for consultar o cadastro.

2 curtidas

Eu tinha pensando nisso, é que outras linguagens como Delphi tem a opção do texto já entrar em UPPER, queria saber se o Java também… só por estética.

Desculpa cara, mas eu não entendi, vc quer habilitar uma opção dessas pro usuário? Ou quer que o texto fique no upper sempre?

Que fique no UpperCase sempre, todo texto que for dada entrada de dados, já apareça para o usuário em UpperCase, apenas questão visual… nada relevante para o projeto haha.

Qualquer coisa vou utilizar OnFocusLost

Usa o KeyReleased, pelo menos o usuário não vai ficar achando que é bug do programa quando ele trocar de campo e tudo ficar maiúsculo, do jeito que alguns são, vão passar horas tentando consertar até entender que isso é normal kkkkkk

KKKKKKKKKKKKKKKKKKKKKKKK, não duvido mesmo não! kkkkkkkkkkkkkkkkkkkkk’ vlw chefe haha.

1 curtida

Você pode criar uma classe pra cuidar disso!

Segue um exemplo:

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

public class LetraMaiuscula extends PlainDocument {

     private int iMaxLength;

    public LetraMaiuscula(int maxlen) {
         super();
         iMaxLength = maxlen;
     }

    @Override
     public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
        //super.insertString(offset, str.toUpperCase(), attr);

        if (str == null) {
             return;
         }

         if (iMaxLength <= 0)        // aceitara qualquer no. de caracteres
         {
             super.insertString(offset, str, attr);
             return;
         }

         int ilen = (getLength() + str.length());
         if (ilen <= iMaxLength) {   // se o comprimento final for menor...
             super.insertString(offset, str.toUpperCase(), attr);   // ...aceita str e passa ela para UpperCase
         }
     }
}

Opa, beleza? Mais fácil que isso… É só colocar dentro do evento KeyListener

jtf_Nome.setText(jtf_Nome.getText().toUpperCase());

Pode usar um DocumentFilter sem precisar tratar eventos.

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
import javax.swing.text.JTextComponent;

public class Exemplo extends JFrame {

    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            Exemplo tela = new Exemplo();
            tela.setDefaultCloseOperation(EXIT_ON_CLOSE);
            tela.setLocationRelativeTo(null);
            tela.setVisible(true);
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    Exemplo() {
        super("Exemplo");
        Dimension size = new Dimension(480, 160);
        setMinimumSize(size);
        setSize(size);
        JTextField jTextField = new JTextField();
        Container container = getContentPane();
        container.add(jTextField, BorderLayout.NORTH);

        usarSempreMaiusculo(jTextField);
    }

    private void usarSempreMaiusculo(JTextComponent component) {
        ((AbstractDocument) component.getDocument()).setDocumentFilter(new DocumentFilter() {

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

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