Tudo Maiusculo

Fiz o codigo abaixo para que um textfield ficar sempre mausculo, mas pra fazer todos os meus textfields (um cadastro de produto) ficarem maiusculos, como seria esse metodo ?
** estou usando o NetBeans

[code] 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());
}

}   [/code]

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

O JFormattedTextField recebe a mascara como parametro.

tLogin      = new JFormattedTextField(criaMascara("AAAAAAAAAAAAAAA"));

Vc seta essa propriedade para o usuario n ser obrigado a digitar (neste caso) 15 caracteres, sendo assim o usuario poderá digitar de 0-15 caracteres apenas limitando o seu TextField.

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:

[code]

public String getLogin(){
	return this.tLogin.getText().toUpperCase();
}[/code]

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());