tenhu um jtextfield no meu form e queria saber se alguem ja mecheu com essa logica, veja so cada 1 letra de uma palavra ele ser maiuscula ex:
Pedro Alves Mendes Da Silva o usuario digita tudo minuscula mas automaticamente o sistema deixa as 1 letras de cada palavra maiuscula.
uma logica para isso seria tudo que vier depois de (espaco) ele deixar a primeira string maiuscula? se for como faco isso? alguem me helpa? vlw
JTextfield
8 Respostas
o método eu faria mais ou menos assim:
String nome = "pedro alves mendes da silva";
String tmp[] = nome.split(" ");
nome = "";
for(int i = 0; i < tmp.length; i++){
nome += tmp[i].replace(tmp[i].substring(0,1), tmp[i].substring(0,1).toUpperCase()) + " ";
}
System.out.println(nome);
e o colocaria num evento keypressed adicionado no jtextfield
Vc pode coloca em um KeyPress Como o Marlon Meneses
ou tb pode aumentar as letras so depois que o seu campo perde o focu
no caso em um evento FocusLost
coloca dentro do evento somente isso
JTextField1.setText(JTextField1.getText().toUpperCase());
Agora se for querer mesmo quando o usuario der espaço faz igual o Marlon Meneses disse
ou da uma alterada no codigo dele e faz qdo for precionada um tecla ja aparecer em maisculo
vc poderia fazer da mesma do FocusLost, so que dentro do KeyPress, todas vez que for digitado alguma coisa seu
JTextField recebe o contudo em Maisculo, também funciona, acho que até mais legal!
JTextField1.setText(JTextField1.getText().toUpperCase());
Marlon eu fis do jeito q vc falo q ele fez certinho coloco tudo depois do espaco como up soh q e o Da Silva sera q existiria uma logica para o Da ficar da?
talvez depois de ((espaco)da,(espaco)de,(espaco)di,(espaco)do,(espaco)du) ele nao colocar como up?
com certeza!!
aih segue:
String nome = "pedro alves mendes da silva";
String tmp[] = nome.split(" ");
nome = "";
for(int i = 0; i < tmp.length; i++){
if(tmp[i].length() > 2){
nome += tmp[i].replace(tmp[i].substring(0,1), tmp[i].substring(0,1).toUpperCase()) + " ";
}else{
nome += tmp[i] + " ";
}
}
System.out.println(nome);
ele me gero um erro tb apenas na primeira letra pesquisada nas outras nao
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.substring(String.java:1934)
at br.com.estudo.view.RegCustomerGUI.jt_nomeKeyPressed(RegCustomerGUI.java:2006)
veja oq estou tentando fazer
String nome = jt_nome.getText().trim();
String tmp[] = nome.split(" ");
nome = "";
for(int i = 0; i < tmp.length; i++){
if(tmp[i].length() > 2){
nome += tmp[i].replace(tmp[i].substring(0,1), tmp[i].substring(0,1).toUpperCase()) + " ";
jt_nome.setText(nome);
}else{
nome += tmp[i] + " ";
jt_nome.setText(nome);
}
}
mas em quanto vou digitando no jtextfield cada letra q digito ele da um espaco pq sera isso amigo? e tambem nao aceita backspace
pq se vc estiver usando o enveto keypressed entao ele inicialmente vai pegar o valor do seu jtextfield com o valor passado
mais ou menos assim:
se o text estiver sem nada entao no evento ele vai ter o valor null…
se por acaso ve digita “w” entao no evento ele vai ter o valor “”…
se por acaso ve digita “3” entao no evento ele vai ter o valor “w”…
se por acaso ve digita “p” entao no evento ele vai ter o valor "w3"
e por aih vai!
e independente de qualquer tecla q for digitada mesmo sendo F1 ele vai pegar o valor do text
tente com o evento propertychange
no evento propertychange ele funciona certinhu sem nenhum bug mas so passa as letras para maiuscula quando ele perde o focu! e nao conforme digito como era em keypressed