JtextField com caixa Alta..(RESOLVIDO)

Olá pessoal,

Estou usando o editor gráfico do netbeans para criar meus frames e preciso que dentro do meu JtextField receba apenas letras MAIÚSCULAS, ouvir dizer do método uppertocase(), mas como uso ele pelas propriedades do jtextfield…?

Adiciona um DocumentListener ao Document do JTextField e no evento de caractere inserido transforme-o em maiusculo.

Olá Mark, desculpa mas não ficou claro pra mim, poderia dar um exemplo?

O JTextfield tem um método setDocument. Dê uma olhada na documentação desta classe. Num tutorial de Swing, aqui do Guj, tem uma explicação legal sobre isto.

Segue um exemplo da Classe que você precisa para criar seu Document customizado:

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class CustomDocument extends PlainDocument {

	public void insertString(int offset, String str, AttributeSet attr)
			throws BadLocationException {
		if (str == null)
			return;
		super.insertString(offset, str.toUpperCase(), attr); // Detalhe no str
		return;
	}

}

Depois basta instanciar seu JTextField e chamar o método setDocument, passando uma instancia de CustomDocument como parâmetro.

JTextField seuTextField = new JTextField();
seuTextField.setDocument(new CustomDocument());

Thiago ficou legal sua explicação,

mas não funcionou aqui…

criei a classe, instanciei o JtextField logo após o initcomponents… mas não funfou…

[quote=lincolngadea]Thiago ficou legal sua explicação,

mas não funcionou aqui…

criei a classe, instanciei o JtextField logo após o initcomponents… mas não funfou…[/quote]

Posta o código pra gente ver.

[code]package cadastros;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

/**
*

  • @author LINCOLN
    */
    public class CustonDocument extends PlainDocument {

public void insertString(int offset, String str, AttributeSet attr)
throws BadLocationException {
if (str == null)
return;
super.insertString(offset, str.toUpperCase(), attr);
return;

}

}
[/code]

AQUI AGORA É ONDE ESTOU INSTANCIANDO ELE…

 public IF_Cad_membros() {
        initComponents();
        
        
        JTextField tf_membro = new JTextField();
        tf_membro.setDocument(new CustonDocument());
        
        //tf_dataCad.getText(mostra_data.dia + " de " + mostra_data.mes + " de " + mostra_data.ano + ", " + mostra_data.dia_semana);
      
        //lookandfeel();
        conecta_banco();
        try {
            

            atualisa_cbbox();
            con_discipulador.resultSet.first();
            con_membros.resultSet.first();
            con_rede.resultSet.first();
            con_cidade.resultSet.first();

            mostrar_dados();

        } catch (SQLException erro) {
            JOptionPane.showMessageDialog(null, "ATENÇÃO! O SEU BANCO DE DADOS ESTÁ VAZIO");
        }


    }

Posta o código do seu método initComponents()

Vc quero o método todo?

é grande, mas lá vai…

[code]
private void initComponents() {

    Label_membro = new javax.swing.JLabel();
    tf_membro = new javax.swing.JTextField();
    tf_cod = new javax.swing.JTextField();

(…)

[code]

Depois desta linha:

Label_membro = new javax.swing.JLabel();
tf_membro = new javax.swing.JTextField();

Adiciona:

tf_membro.setDocument(new CustonDocument()); 

E remove do seu método IF_Cad_membros() o tf_membro.

:lol:
OPA,

FUNCIONOU…

Muito obrigado thiago…

Legal! Adiciona no Assunto do tópico [RESOLVIDO]