Galerinha é o seguinte… tenho um jtextfield que pode receber somente letras maiusculas. Só que eu não consigo passar as letras que a pessoa digita para uppercase.
Exemplo:
A pessoa digita a:
então no jtextField tem que aparecer A em maiusculo
e assim sucessivamente… de acordo com o que ele vai digitando vai passando para maiusculo.
alguém ai tem uma solução.
juniorlinux, num teria uma maneira genérica de fazer isso?
é porque eu tenho vários campos que precisa desse código.
rodrigo.turini
Fera, veja se este exemplo abaixo te ajuda...
importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassExemploMaiusculasextendsJFrame{JButtoncopiar,limpar;JLabelrotulo1,rotulo2;JTextFieldtexto1,texto2;publicExemploMaiusculas(){super("Exemplo de saídas maiúsculas");Containertela=getContentPane();tela.setLayout(null);rotulo1=newJLabel("Nome: ");rotulo2=newJLabel("Nome: ");texto1=newJTextField(20);texto2=newJTextField(20);copiar=newJButton("Copiar");limpar=newJButton("Limpar");rotulo1.setBounds(20,30,50,20);rotulo2.setBounds(20,60,50,20);texto1.setBounds(60,30,180,20);texto2.setBounds(60,60,180,20);copiar.setBounds(20,130,100,20);limpar.setBounds(180,130,100,20);copiar.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){texto2.setText(texto1.getText().toUpperCase());}});limpar.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){texto1.setText("");texto2.setText("");texto1.requestFocus();}});tela.add(rotulo1);tela.add(rotulo2);tela.add(texto1);tela.add(texto2);tela.add(copiar);tela.add(limpar);setSize(300,200);setVisible(true);setLocationRelativeTo(null);}publicstaticvoidmain(Stringargs[]){ExemploMaiusculasapp=newExemploMaiusculas();app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}
Abçs
Andre_Rosa
Veja bem:
JTextField yourField = new UpperCaseField( 10 );
Andre_Rosa
Veja bem:
JTextFieldyourField=newUpperCaseField(10);
D
david.jv
rodrigo.turini, não seria bem assim. Vou explicar melhor.
Exemplo
Uma pessoa digita a letra t, em vez de aparecer a letra t em minúsculo ela tem que aparecer em maiúsculo (no jtextfield). Preciso que seja assim, pois estou usando uma expressão regular que verifica se as letras estão todas maiúsculas e se num tiver ele me retorna uma mensagem.
Meramente iluastrativo
Nome
[ ]
a pessoa digita a:
Nome
[A ]
a pessoa digita l:
Nome
[AL ]
a pessoa digita i:
Nome
[ALI ]
a pessoa digita n:
Nome
[ALIN ]
a pessoa digita e:
Nome
[ALINE ]
D
david.jv
juniorlinux o código do link que você passou num funfo.
Mais valeu
Eric_Yuzo
A classe herdando PlainDocument postada está aparentemente correta.
Está havendo alguma exceção ou ele simplesmente não está convertendo os caracteres?
D
david.jv
juniorlinux, o outro código
[code]
JTextfield text = new UpperCaseField( 10 );
também não funcionou, ele da um erro:
cannot find symbol
D
david.jv
Eric Yuzo, ele simplesmente não converte.
rodrigo.turini
David, mas você chegou a rodar o cod que eu passei?
Porque ele faz justamente isso, no 1º TextField ele recebe o texto digitado em letras minúsculas, e mantem.
Enquanto no 2º TextField ele recebe as letras em minúsculas, e converte p/ maiúsculas. (usando o método toUpperCase().)
D
david.jv
rodrigo.turini, rodei sim, só que o seu código só torna maiúsculo a letra quando clica no botão Copiar
rodrigo.turini
Ah tah, entendi…
Estou de saída, mas se até amanhã não chegarem a uma solução eu tento ajudar.
Abraços e boa sorte.
Eric_Yuzo
Pelo que vi no seu outro tópico, você tem outros Documents para realizar funções diferentes. Quando é feito um setDocument, o que fica valendo é o último Document setado.
Veja se o seu LetraMaiscula não está sendo substituído por outro Document.
D
david.jv
vlw cara…
D
david.jv
eric yuzo, muito obrigado, era isso mesmo. é que eu tava chamando o meu document limitaCaracter e o meu document letramaiuscula no mesmo campo, dai ele só aceitava um, como você disse.
Vlw
D
david.jv
affsss, agora gerou outo erro… O meu campo agora não limita o carater, tipo, se eu uso o document limitacaracter ele não aceita o document letramaiuscula e vice-versa.
Eric_Yuzo
Não pode fazer um Document que converta os caracteres para maiúsculo e limite a quantidade de caracteres?
D
david.jv
eric yuzo, precisa responder mais não, consegui.
ta ai o código para quem precisar, num sei se é o certo mais esta ai:
importjavax.swing.text.AttributeSet;importjavax.swing.text.BadLocationException;importjavax.swing.text.PlainDocument;publicclassLetraMaiusculaextendsPlainDocument{privateintiMaxLength;publicLetraMaiuscula(intmaxlen){super();iMaxLength=maxlen;}@OverridepublicvoidinsertString(intoffset,Stringstr,AttributeSetattr)throwsBadLocationException{//super.insertString(offset, str.toUpperCase(), attr);if(str==null){return;}if(iMaxLength<=0)// aceitara qualquer no. de caracteres{super.insertString(offset,str,attr);return;}intilen=(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}}
créditos para o Eric Yuzo
dougpts
O problema que vi, foi a sobrecarga que foi feita no método insert. O correto seria sobrecarregar o replace.