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.
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.
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);
}
});
}
}