private void ttf_maiuscuooKeyReleased(java.awt.event.KeyEvent evt) {
// deixando tudo maiusculo
if ((evt.getKeyCode() != KeyEvent.VK_HOME) && evt.getKeyCode() != KeyEvent.VK_LEFT && evt.getKeyCode() != KeyEvent.VK_RIGHT) {
ttf_maiuscuoo.setText(ttf_maiuscuoo.getText().toUpperCase());
}
}
Tudo Maiusculo
16 Respostas
este seu não funciona?
se fosse eu faria
if((e.getKeyCod() >= 97) && (e.getKeyCode() <= 122)){
jtf.setText(jtf.getText().toUpperCase());
}
97 é o a minusculo e 122 o z minusculo -> tabela ascii
tem um jeito de ir adicionando letra a letra, jtf.append() ou algo assim
veja se te ajuda, eu to meio enferrujado com swing =D
Ou vc pode criar 1 mascara para seus JTextField usando o JFormattedTextField saca so:
Metodo q cria a mascara:public static MaskFormatter criaMascara(String a){
MaskFormatter formatter = null;
try{
formatter = new MaskFormatter(a);
}catch (Exception s){
s.getStackTrace();
}
return formatter;
}
tLogin = new JFormattedTextField(criaMascara("AAAAAAAAAAAAAAA"));
tLogin.setFocusLostBehavior(JFormattedTextField.COMMIT);
Ae vc pode configurar sua mascara como quiser:
# Any valid number, uses Character.isDigit.
' Escape character, used to escape any of the special formatting characters.
U Any character (Character.isLetter). All lowercase letters are mapped to upper case.
L Any character (Character.isLetter). All upper case letters are mapped to lower case.
A Any character or number (Character.isLetter or Character.isDigit)
? Any character (Character.isLetter).
* Anything.
H Any hex character (0-9, a-f or A-F).
Espero ter ajudado!
Edit: No seu caso vc usaria L, assim quando o usuario degitar qq carcter ja vai ser automaticamente passado para Uppercase.
Outra opção eh vc fazer o seginte:public String getLogin(){
return this.tLogin.getText().toUpperCase();
}
Na biblioteca String temos 2 metodos: toUpperCase() para passar toda string para Maiusculo e toLowerCase para minusculo
QQ duvida sobre mascara:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/MaskFormatter.html
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFormattedTextField.html
o meu fonciona, o problema é tenho uma tela com muitos jtextfields, e como esta o meu codigo, teria q fazer esse codigo para cada jtextfield, queria saber como fazer atraves de um metodos, para q todos o jtextfields só aceitasse maiusculo.
Tente adicionar esse Listener no painel (eu não sei se funciona)
se não funcionar terá q adicionar, o KeyListener para cada textfield, a vantagem é que é o mesmo KeyListener pra todos
addKeyListener(
new KeyListener(){
public void keyPressed(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){
char tecla = e.getKeyChar();
if((tecla >= 97) && (tecla <= 122)){
tecla -= 32;
e.setKeyChar(tecla);
}
}
}
);
Eu ja postei uma solução para isto, se vc quer q o textfield so aceita caracter maiusculo use mascara!!
como tenho um monte de jtextfields, fiz um array deles, se eu usar a mascara tem q ser com o jformatedtextfield, ai fica fora do array…
mesmo usando mascara, teria q fazer uma mascara pra cada jformatedtextfield, mas nao quero isso, quero um metodo que funcione pra todos, vou analisar o codigo q o colega mandou acima.
mas valeu a dica,
abraços
Amigo trabalhar com array de textfield n eh a melhor opção! Em uma aplicação maior se vc tivesse uns 3 ou 4 arrays de textfield vc ia fazer tanta confusão para saber qual seria o tf q vc taria procurando. Mas para vc n seria tanto problema pois foi vc que fez, mais pensa se outra pessoa fosse le seu codigo, o ideia eh criar tf 1 por 1 e dando nomes semelhantes ao seu uso para facilitar a manutenção.
Tente sempre fazer 1 codigo limpo, mesmo q vc diga q para esse aplicação so vc vai ter acesso, eh sempre bom treinar como fazer um codigo mais limpo possivel!
phiny, ate concordo contigo, mas tratar tf por tf deixa o codigo muito extenso e talves ate mais pesado,o q vc acha disso ?, nessa minha aplicacao tenho 19 tfs, da muito trabalho tratar um por um, mas com certeza o codigo deve ficar limpo
Cara… em programação vc pensa em manutenção tb. Se o programa fica um pouquinho mais extenso, e facilita a manutenção eh a melhor opção. Se todos fossem falar q o programa tem q ser pequeno, ninguem usaria MVC, ninguem usaria VO e DAO.
19 tf eh muito pouco para vc ficar falando q da muito trabalho… se vc falasse q era 100 ate q ia. Mas ja que vc ta com preguiça de ficar fazendo 1 por 1, crie 1 metodo para cria-los, ainda sim eh melhor do q usar array!
public JFormattedTextField criaTf(String mascara){
JFormattedTextField t = new JFormattedTextField(criaMascara(mascara));
.]
.
.
}
No meu eu fiz assim:
especificacaojTextField.setText(especificacaojTextField.getText().toUpperCase());
Segue abaixo dentro do evento perder o foco (onexit)
private void especificacaojTextFieldFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
especificacaojTextField.setText(especificacaojTextField.getText().toUpperCase());
}
Seria mais interessante adicionar um DocumentListener e no evento deixar em maiuscula.
Mostra um exemplo para gente, assim todos que consultar este tópico verá.
field.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
}
@Override
public void insertUpdate(DocumentEvent e) {
field.setText(field.getText().toUpperCase());
}
@Override
public void changedUpdate(DocumentEvent e) {
}
});
Estou pretendendo fazer isso… como ficaria no form todo… ?
como usar esse código ai em cima ?
public void validaCase(FacesContext fc, UIComponent component, Object value) {
String valor = value.toString();
if (!valor.matches("[A-Z].*")) {
throw new ValidatorException(new FacesMessage(
"Inicie o nome com letra maiúscula!"));
}
Ahh nao sabia que era JSF.
cara vcs estão fazendo tempestade em copo d’agua basta apenas usar o codigo a seguir:
jtextfield.setText(jtextfield.getText().toUpperCase());