Converter para Maiúsculas - NetBeans 6.1

15 respostas
C

Galera,

Juro que pesquisei hoje o dia todo na net e, como usuário iniciante de Java (to migrando do VB por causa do trabalho, mas não sou profissional do ramo) estou encontrando algumas dificuldades qye devem ser café pequeno para os mais experientes que a seguinte:

Numa das telas do meu projeto inseri uma caixa de combinação que, a princípio, será editável, para que o usuário digite determinada informação (nome da empresa) caso a mesma não esteja na lista, que será recuperada de um banco de dados. Gostaria de restringir a digitação a apenas caracteres maiúsculos ou convertê-los para tal quando o objeto perder o foco.

Qual a melhor forma para fazer isso? (pesquisei e cheguei perto com toUpperCase mas não consegui implementar corretamente).

Desde já agradeço.

15 Respostas

Danillo_Moreno

Cara tente usar o toUperCase mais ou menos assim:

String inicial = "ahahahahhaha";
String maiuscula = "";

maiuscula = inicial.toUperCase();

Se me lembro bem é isso… Faz tempo que não uso…

Esqueci de dizer que se você quiser ir convertendo enquanto o usuário digita de uma pesquisada sobre o KeyListener…

Att…

davidbuzatto

Olá

A solução não é muito simples, mas o código abaixo faz o que vc precisa.
Na verdade vc vai precisar criar um novo Document para seu componente que implemente essa regra.
No código abaixo, criei um novo JTextField (UpperCaseField) que já faz a implementação do document.

/**
 *
 * @author David Buzatto
 */
public class UpperCaseField extends JTextField {

    protected Document createDefaultModel() {
        return new UpperCaseDocument();
    }

    static class UpperCaseDocument extends PlainDocument {

        public void insertString( int offs, String str, AttributeSet a )
                throws BadLocationException {

            if ( str == null ) {
                return;
            }
            char[] upper = str.toCharArray();
            for ( int i = 0; i < upper.length; i++ ) {
                upper[i] = Character.toUpperCase( upper[i] );
            }
            super.insertString( offs, new String( upper ), a );
        }
    }

}

Para instanciar seu JTextField vc faria:

JTextField campo = new UpperCaseField();

Caso vc esteja utilizando o NetBeans, selecione seu campo, e na aba de propriedades, escola a aba code.
Lá vá no custom creation code e insira new UpperCaseField();

Até mais!

Felipe.JavaMan

Cara, deve ter outras formas mais elegantes para fazer isso + vou tentar te ajudar com a que eu sei, veja bem:

se o campo que você estiver usando for um jTextField e você quiser somente a digitação de letras maiúsculas, você pode pegar a letra no momento em que ela é digitada através do evento KeyListener e efetuar a conversão caso ela seja minúscula, veja o exemplo abaixo:

//  Declaração 
JTextField  jTextField = new javax.swing.JTextField();
String minuscula;
String maiuscula;



  // Aqui o evento é capturado e chama o método  jTextFieldConverterMaiuscula passando como parâmetro o evento

            jTextField.addKeyListener(new java.awt.event.KeyAdapter() {
            public void converterMaiuscula(java.awt.event.KeyEvent evt) {
                jTextFieldConverterMaiuscula(evt);
            }
        });


  // Nesse método ele efetua a conversão da string digitada p/ maiusculo

        private void jTextFieldConverterMaiuscula(java.awt.event.KeyEvent evt) {
            minuscula=jTextField1.getText();
            maiuscula= minuscula.toUpperCase();
             jTextField.setText(maiuscula);
}

Como eu ja disse, deve existir formas melhores de se fazer isso. Espero ter ajudado.

C

Ainda não implementei nenhuma das dicas postadas. Só passei para agradecer à galera pela ajuda.

Abraços e muito obrigado.

C

Como postei anteriormente, trata-se de uma CAIXA DE COMBINAÇÃO. Ainda assim implementei a sugestão do David substituindo o extends JTextField por JComboBox e não funcionou.

David,

Poderia me ajudar?

Obrigado.

C

Substitui o JComboBox pela JTextField, implementei a dica passada pelo Davi e ainda assim não funcionou…

davidbuzatto

Cláudio,

Vc deve criar uma classe nova no seu projeto, com o nome de UpperCaseField e então dentro dela colar o código que passei.
Na sua interface gráfica, coloque um JTextField, clique nele e no painel de proprieades, veja que acima existem outros painéis, dentre eles o painel código (code). Clique nele e vc verá que existem várias opções. Vá na “custom creation code”, não sei como está traduzido no netbeans em portugues. Nessa “propriedade” coloque “new UpperCaseField();” (sem as aspas).
Vá no código da sua classe de interface gráfica e faça o import do pacote que tem a classe UpperCaseField ou execute o fix imports (corrigir importações).
Compile e teste.

[]'s

C

Davi,

Fiz exatamente o que vc descreveu, inclusive substituindo a caixa de combinação pelo JTextField. O NetBeans está traduzido e coloquei a classe em “Criação de Código Personalizado”. Vou refazer os passos. valeu.

C

Davi,

Quando transferi o código que vc postou na linha abaixo apareceu a sugestão “Converter…a para AttributeSet”

super.insertString(offs,new String(upper),a);

C

Também executei o corrigir importações e ela não insiriu o respectivo pacote.

Poderia me ajudar por favor.

Obrigado.

davidbuzatto

Vou postar o projeto com isso pronto…

davidbuzatto

Ta ai.

Eu nunca fiz o mesmo com os JComboBox, mas o caminho é mais ou menos esse.

Até mais!

C

Davi,

Muito obrigado.

Para JTextField funcionou perfeitamente. Vou tentar mais tarde para JComboBox.

Mais uma vez muito obrigado.

davidbuzatto

Disponha :smiley:

[]´s

discorpio

Boa tarde a todos.

Esta é mais uma forma das formas melhores, ou seja, simplificar o código, assim:

// Nesse método ele efetua a conversão da string digitada p/ maiusculo

        private void jTextFieldConverterMaiuscula(java.awt.event.KeyEvent evt) {
             jTextField.setText(jTextField1.getText().toUpperCase());
        }

Repare que nem precisou criar as variáveis maiscula e minuscula.

Criado 29 de outubro de 2008
Ultima resposta 13 de fev. de 2010
Respostas 15
Participantes 5