Como Inserir letras MAIUSCULAS.[RESOLVIDO]

Pessoal qual classe e metodo responsavel que quando o usuario digitar em um textfeild mesmo com o Caps Lock desligado aparece maiusculas?

Também preciso disso, mas para qdo ele digitar a UF!

Isso te ajuda ?

http://www.guj.com.br/posts/list/27670.java

Vai ser util, com certeza! :slight_smile:

Vixe já ralei muito com isso…

Você deve adicionar um KeyListener para o seu campo de texto para tratar isso.

Exemplo:

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Listener implements KeyListener {

    public void keyTyped(KeyEvent e) {
        char ch = e.getKeyChar();
        if (Character.isLetter(ch)) {
            e.setKeyChar(Character.toUpperCase(ch));
        }
    }

    public void keyPressed(KeyEvent e) {
    }

    public void keyReleased(KeyEvent e) {
    }
}

E aplique ao seu JTextField:

JTextField campoTexto = new JTextField();
Listener listener = new Listener();
campoTexto.addKeyListener(listener);

Espero ter ajudado.

Essa é a maneira errada de se fazer. Como burlar:

  1. Dê ctrl+c numa palavra com letras minúsculas;
  2. Vá até o campo, dê ctrl+v

Ou seja, se seu usuário estiver copiando o valor do campo de um bloco de notas ou excel, seu método fura! O correto é fazer um Document, como descrito no link acima.

Boa amigao Ajudou muito. Vlw mesmo agora se vc poder me da uma força em outro topico lá vlw

Essa é a maneira errada de se fazer. Como burlar:

  1. Dê ctrl+c numa palavra com letras minúsculas;
  2. Vá até o campo, dê ctrl+v

Ou seja, se seu usuário estiver copiando o valor do campo de um bloco de notas ou excel, seu método fura! O correto é fazer um Document, como descrito no link acima.[/quote]

Errada!?

Basta mudar o Listener…

Testa aí pra ver se funciona amigo.

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JTextField;

public class Listener implements KeyListener {

    public void keyTyped(KeyEvent e) {
        char ch = e.getKeyChar();
        if (Character.isLetter(ch)) {
            e.setKeyChar(Character.toUpperCase(ch));
        }
    }

    public void keyPressed(KeyEvent e) {
        boolean validar = false;
        if (e.isControlDown()) {
            if (e.getKeyCode() == KeyEvent.VK_V) {
                validar = true;
            }
        }

        if (e.isShiftDown()) {
            if (e.getKeyCode() == KeyEvent.VK_INSERT) {
                validar = true;
            }
        }

        if (validar) {
            String text = ((JTextField) e.getSource()).getText();
            text = text.toUpperCase();
            ((JTextField) e.getSource()).setText(text);
        }
    }

    public void keyReleased(KeyEvent e) {
    }
}

Ok, agora faça o ctrl+c e o ctrl+v com o mouse… (detalhe, o document é imune a todos esses problemas, sem ter que criar flags ou outras gambis, como a que vc fez).

Sem falar que em outros SOs, pode ser que o copiar e colar não sejam com as teclas CTRL ou SHIFT.

[quote=ViniGodoy]Ok, agora faça o ctrl+c e o ctrl+v com o mouse… (detalhe, o document é imune a todos esses problemas, sem ter que criar flags ou outras gambis, como a que vc fez).

Sem falar que em outros SOs, pode ser que o copiar e colar não sejam com as teclas CTRL ou SHIFT. [/quote]

Tratando o evento do mouse:

class ListenerMouse implements MouseListener {

    public void mouseClicked(MouseEvent e) {
    }

    public void mousePressed(MouseEvent e) {
        //Levando em conta que o botão do mouse que cola é o botão direito (só pra testar)
        if (e.getButton() == MouseEvent.BUTTON3) {

            int inicioSelecao = ((JTextField) e.getSource()).getSelectionStart();
            int fimSelecao = ((JTextField) e.getSource()).getSelectionEnd();

            String textoOriginal = ((JTextField) e.getSource()).getText();

            String textoAntes = textoOriginal.substring(0, inicioSelecao);
            String textoDepois = textoOriginal.substring(fimSelecao, textoOriginal.length());

            System.out.println(textoAntes + textoDepois);

            Clipboard clipBoard = Toolkit.getDefaultToolkit().getSystemClipboard();

            Transferable t = clipBoard.getContents(new Object());
            try {
                String texto = (String) t.getTransferData(DataFlavor.stringFlavor);                
                ((JTextField) e.getSource()).setText((textoAntes +texto+ textoDepois).toUpperCase());
            } catch (UnsupportedFlavorException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }

        }
    }

    public void mouseReleased(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }
}

Eu confesso que não conhecia outra forma para tratar isso :oops: e concordo com relação ao SO poder tratar esses eventos com outras teclas.

Agora aprendi a maneira mais correta de se fazer, mas para o que eu precisei usar, a maneira que eu implementei serviu demais pra mim. :smiley:

Só tentei ajudar e demonstrar que existe outra forma (ainda que não seja tão correta) de se tratar esse evento…

Abraço!

[quote=renanedpedroso]Eu confesso que não conhecia outra forma para tratar isso :oops: e concordo com relação ao SO poder tratar esses eventos com outras teclas.

Agora aprendi a maneira mais correta de se fazer, mas para o que eu precisei usar, a maneira que eu implementei serviu demais pra mim. :smiley:

Só tentei ajudar e demonstrar que existe outra forma (ainda que não seja tão correta) de se tratar esse evento…
[/quote]

Claro, nem tiro seu mérito de tentar ajudar.
Só ressaltei que era errada para que o colega não pensasse que essa, aparentemente mais simples, é a correta.

(PS: Essa que vc colocou é a maneira clássica de se tentar resolver. Eu já fiz assim, e provavelmente todo mundo que hoje usa o Document fez também, e você só começa a descobrir os problemas tempos depois, quando vc percebe que algum usuário descobriu uma forma de inserir minúsculas na aplicação)

Excelente, aqui funcionou perfeitamente. Valeu galera

No Windows pode usar Colar = Shift+Ins, e Copiar = Ctrl+Ins.