Eu preciso definir que por exemplo no meu TextField so possa ser digitado 5 caracter
So que não estou conseguindo fazer isso, ja tentei setColunns() e tambem ja tentei trocar para o FormatterField o problema doJFormattedTextField é que se nao for digitado os 5 ele da problema na hora de eu dar o get para pegar o texto.
ae cara…
num sei se vai ajudar mas faz o seguinte…
la nos eventos do TextField…tu clica em keypressed dai vai gerar uma funçaozinha q vai ser chamada toda vida q um tecla for pressionada na TextField…tu ja deve sakar isso…se nao, sakou agora poiseh…lah na funcao tu poe o seguinte…
===================================
if (NomedoTextField.getText().length > 5) { NomedoTextField.setText(NomedoTextField.getText().substring(0,4));
===================================
pronto!! isso ae talvez de ajude cara!! flw
P
periclesmendoncaPJ
Cara…eu também tava com esse problema…
dae achei isso aqui e funcionou…curte ae…
importjavax.swing.*;importjavax.swing.text.*;publicclassFixedLengthDocumentextendsPlainDocument{privateintiMaxLength;publicFixedLengthDocument(intmaxlen){super();iMaxLength=maxlen;}publicvoidinsertString(intoffset,Stringstr,AttributeSetattr)throwsBadLocationException{//if (s == 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,attr);// ...aceita strelse{if(getLength()==iMaxLength)return;// nada a fazerStringnewStr=str.substring(0,(iMaxLength-getLength()));super.insertString(offset,newStr,attr);}}}
UAHeuHUAE…
eu também não sabia que só isso ae resolvia…
UAeUHEUAheAE…no começo do ano eu tava fazendo um trabalho da faculdade e usei esse código todo ae…
mas é sempre assim…
vivendo e aprendendo…
M
MurrayBRPJ
hehehehe, eu ja fiz cada coisa que vocês nem acreditam uhasudSUHADUHASUHDasuh
mas com o tempo a gente vai aprendendo algumas coisas ( principalmente olhando o ctrl+SPACE do eclipse )
uhuAuhsuhdsuahudhdasuh flw
J
JavaNightPJ
“MurrayBR”:
JTextField nameField = new JTexField(5)
eu sei… você quer se esganar :)
isso nao funciona pra travar o maximo de caracteres
P
periclesmendoncaPJ
Po…se não funciona tem que ser mesmo esse código grande que eu fiz ae?
J
JavaNightPJ
sim
o idel eh ter seu proprio modelo de documento .
so q o seu metodo insertString pode ser reduzido um pouco
mas o jeito q vc coloco ta mto bom sim…
[]'s
M
MurrayBRPJ
nem vou ser cretino em falar que aqui funcionou, eu tinha lido num livro, dai eu vi e coloquei mas nunca testei
J
JavaNightPJ
pois eh velho…eh estranho essa api
tpo na api fala q eh o numero de colunas
mas eu tb nao faco a minima noçaum pra q serve definir um numero x de colunas
se eu definir 10 colunas pro textfield .e nao colocar eu nao vi diferença velho
se alguem souber ai posta ai
acho que o valor padrao eh 0
M
marsolaPJ
Bem ja tive esse problema, eu passei a usar o JFormattedTextFild, achei bem melhor porque posso modelar o meu textfild, do tipo, se usar para fazer um cadastro e preciso do telefone do cara e do CPF, o formata já vem predefinido, de acordo com a programação. E isso vale tambem para o numero de caracterers digitados.
Se alguem precisar do codigo me da um toque ai que eu posto.
fui…
T
TylerPJ
Esse número de colunas que é passado para o construtor do JTextField serve só pra calcular a largura preferida do componente. Esse cálculo é feito multiplicando-se a largura da letra ‘m’ pelo número de colunas (ver java.awt.FontMetrics.charWidth(char)).
S
SidineiPJ
“marsola”:
Bem ja tive esse problema, eu passei a usar o JFormattedTextFild, achei bem melhor porque posso modelar o meu textfild, do tipo, se usar para fazer um cadastro e preciso do telefone do cara e do CPF, o formata já vem predefinido, de acordo com a programação. E isso vale tambem para o numero de caracterers digitados.
Se alguem precisar do codigo me da um toque ai que eu posto.
fui…
Bom tambem ja usei o JFormattedTextFild so que o seguinte tem como eu fazer com que nao aparareca a foramtacao tipo a do cpf ###.###.###-## quer dizer que nao aparece os pontos e o - antes que seja digitado os numeros ou melhor so apareca quando for digitado o numero e ai aparece tipo 123.125. e depois vai aparecendo o resto?
E outra para pegar o conteudo do campo se eu der um getText() ele pega todo o conteudo se eu quiser pegar so os numeros como eu faco?
Tem uma propriedade do JFormattedTextFild ou eu tenho que fazer um metodo que compara caracter por caracter?
Ah para inserir o formato eu usei assim
MaskFormatter formatter = new MaskFormatter("###.###.###-##"); formatter.install(jFormattedTextFild );
tem alguma propriedade do JFormattedTextFild que posso setar direto o formato do texto, se tem qual e?
M
marsolaPJ
Bem, quando precisei usei esse codigo aqui
public void MascararCampo(){
javax.swing.text.MaskFormatter Campo = new javax.swing.text.MaskFormatter("###");
jFormattedTxtFild = javax.swing.JFormattedTextField(Campo);
}
e depois chamei o metodo dentro do init. Voce pode fazer sem que aparece os pontos, basta dentro de javax.swing.text.MaskFormatted("###.###"), ira aparecer somente o que vc setar dentro dele, somente isso.
Voce pode criar uma variavel para pegar o valor de dentro deste campo e imprimir em outro lugar, ou salvar em um db, como vc quiser, por exemplo:
String valor;
txt_campo = getText();
Voce pegou o que vc digitou no campo. Caso nao tenha sido claro ou ter falado alguma besteira me ajudem tb !
rsrsrs
[]s
Marsola
S
SidineiPJ
Bom igual ao meu tambem funciona ,mas se for para formatar campos que tenha que aparacer o ponto ###.### (123.512) e este ponto so aparecer depois de tres numero tipo 1.255 nao funciona, alguem sabe como fazer isso?
e ainda depois que digitei 123.655 tem algum metodo que retorne 123655?? poi o getText te retorna 123.655!