maskFormatter em jTextField

pessoal, como faço para adicionar um maskFormatter em um jTextField? ou tem que ser em um jFormattedTextField? tenho que colocar o código para adicionar o maskFormatter dentro de um focusListener? como faço? alguém pode me explicar?

try { jTextField = new JFormattedTextField(new MaskFormatter("####-#")); } catch (ParseException ex) { }

esse código devo colocar dentro do focusListener do jTextField?

jTextField.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent evt) { try { jTextField = new JFormattedTextField(new MaskFormatter("####-#")); } catch (ParseException ex) { } } @Override public void focusLost(FocusEvent evt) { jtfEndereco.setBackground(Color.WHITE); } });

é isso? alguém me explica direitinho? pois não to conseguindo… e esse focusListener fica dentro do construtor do meu JFrame certo?

Pelo que já usei, não é necessário usar dentro de um evento não. Você declara seu JTextField, e logo em seguida formata ele com a máscara que você quer, do jeitinho que tá no seu primeiro código.

Você já tentou fazer sem colocá-lo dentro do evento?

[quote=Soruji]Pelo que já usei, não é necessário usar dentro de um evento não. Você declara seu JTextField, e logo em seguida formata ele com a máscara que você quer, do jeitinho que tá no seu primeiro código.

Você já tentou fazer sem colocá-lo dentro do evento?

[/quote]

tentei sim, coloquei ele dentro do construtor do meu jFrame, onde eu defino tamanho, redimensionável etc… coloquei apenas o primeiro código dentro do construtor mas não funcionou

Mas você fez todos os imports necessários?

Poste a classe toda, se puder, por favor. Aí dá pra ter uma ideia melhor. :wink:

[quote=Soruji]Mas você fez todos os imports necessários?

Poste a classe toda, se puder, por favor. Aí dá pra ter uma ideia melhor. :wink:[/quote]

cara, a classe tá enorme, mas coloquei os imports sim… segue o código inteiro:

[code]package lista02;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.*;
import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.text.MaskFormatter;

public class Janela extends javax.swing.JFrame {

public Janela() {
    initComponents();
    centralizar();
    setResizable(false);
    getContentPane().setLayout(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    addWindowListener(new WindowAdapter() {
        @Override
        public void windowOpened(WindowEvent evt) {
            JOptionPane.showMessageDialog(null,
                    "Universidade Presbiteriana Mackenzie!",
                    "Linguagem de Programação II",
                    JOptionPane.INFORMATION_MESSAGE);
        }
        @Override
        public void windowClosing(WindowEvent evt) {
            JOptionPane.showMessageDialog(null, "Obrigado por utilizar nosso sistema!");
        }
    });
    
    jbConsultar.addActionListener (new ActionListener (){
        @Override
        public void actionPerformed (ActionEvent evt){
            if ((jtfAgencia.getText().isEmpty() == true) || (jtfConta.getText().isEmpty() == true)){
                JOptionPane.showMessageDialog(null, "É necessário informar a agência e a conta!");
            }
        }
    });
    
    jbFechar.addActionListener (new ActionListener (){
        @Override
        public void actionPerformed (ActionEvent evt){
            JOptionPane.showMessageDialog(null, "Obrigado por utilizar nosso sistema!");
            System.exit(0);
        }
    });
    
    jtfAgencia.addFocusListener(new FocusAdapter() {
        @Override
        public void focusGained(FocusEvent evt) {
            jtfAgencia.setBackground(Color.YELLOW);
        } 
        @Override
        public void focusLost(FocusEvent evt) {
            jtfAgencia.setBackground(Color.WHITE);
        }
    });
    
    jtfConta.addFocusListener(new FocusAdapter() {
        @Override
        public void focusGained(FocusEvent evt) {
            jtfConta.setBackground(Color.YELLOW);
        } 
        @Override
        public void focusLost(FocusEvent evt) {
            jtfConta.setBackground(Color.WHITE);
        }
    });
    
    jtfNome.addFocusListener(new FocusAdapter() {
        @Override
        public void focusGained(FocusEvent evt) {
            jtfNome.setBackground(Color.YELLOW);
        } 
        @Override
        public void focusLost(FocusEvent evt) {
            jtfNome.setBackground(Color.WHITE);
        }
    });
    
    jtfEndereco.addFocusListener(new FocusAdapter() {
        @Override
        public void focusGained(FocusEvent evt) {
            jtfEndereco.setBackground(Color.YELLOW);
        } 
        @Override
        public void focusLost(FocusEvent evt) {
            jtfEndereco.setBackground(Color.WHITE);
        }
    });
    
    jtfTelefone.addFocusListener(new FocusAdapter() {
        @Override
        public void focusGained(FocusEvent evt) {
            jtfTelefone.setBackground(Color.YELLOW);
        } 
        @Override
        public void focusLost(FocusEvent evt) {
            jtfTelefone.setBackground(Color.WHITE);
        }
    });
    
    jtfCpf.addFocusListener(new FocusAdapter() {
        @Override
        public void focusGained(FocusEvent evt) {
            jtfCpf.setBackground(Color.YELLOW);
        } 
        @Override
        public void focusLost(FocusEvent evt) {
            jtfCpf.setBackground(Color.WHITE);
        }
    });
    
    //PARTE QUE ESTÁ DANDO O PROBLEMA
    try {
        jtfAgencia = 
            new JFormattedTextField(
                new MaskFormatter("####-#"));
    } catch (ParseException ex) {
    }
    
    try {
        jtfConta = 
            new JFormattedTextField(
                new MaskFormatter("#####-##"));
    } catch (ParseException ex) {
    }
    
    try {
        jtfTelefone = 
            new JFormattedTextField(
                new MaskFormatter("(0xx##) ####-####"));
    } catch (ParseException ex) {
    }
    
    try {
        jtfCpf = 
            new JFormattedTextField(
                new MaskFormatter("###.###.###-##"));
    } catch (ParseException ex) {
    }
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    bgContas = new javax.swing.ButtonGroup();
    jlAgencia = new javax.swing.JLabel();
    jtfAgencia = new javax.swing.JTextField();
    jlConta = new javax.swing.JLabel();
    jtfConta = new javax.swing.JTextField();
    jSeparator1 = new javax.swing.JSeparator();
    jSeparator2 = new javax.swing.JSeparator();
    jlNome = new javax.swing.JLabel();
    jlEndereco = new javax.swing.JLabel();
    jlTelefone = new javax.swing.JLabel();
    jlCpf = new javax.swing.JLabel();
    jrbCorrente = new javax.swing.JRadioButton();
    jrbPoupanca = new javax.swing.JRadioButton();
    jbConsultar = new javax.swing.JButton();
    jbAtualizar = new javax.swing.JButton();
    jbFechar = new javax.swing.JButton();
    jtfNome = new javax.swing.JTextField();
    jtfEndereco = new javax.swing.JTextField();
    jtfTelefone = new javax.swing.JTextField();
    jtfCpf = new javax.swing.JTextField();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("Linguagem de Programação II");
    setResizable(false);
    getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

    jlAgencia.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jlAgencia.setText("Código da Agência:");
    getContentPane().add(jlAgencia, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 110, 18));

    jtfAgencia.setToolTipText("Digite o código da agência.");
    jtfAgencia.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jtfAgenciaActionPerformed(evt);
        }
    });
    getContentPane().add(jtfAgencia, new org.netbeans.lib.awtextra.AbsoluteConstraints(125, 10, 50, -1));

    jlConta.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jlConta.setText("Número da Conta:");
    getContentPane().add(jlConta, new org.netbeans.lib.awtextra.AbsoluteConstraints(205, 10, 105, 18));

    jtfConta.setToolTipText("Digite o número da conta.");
    getContentPane().add(jtfConta, new org.netbeans.lib.awtextra.AbsoluteConstraints(315, 10, 60, -1));
    getContentPane().add(jSeparator1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 40, 365, 10));
    getContentPane().add(jSeparator2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 180, 365, 10));

    jlNome.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jlNome.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jlNome.setText("Nome:");
    getContentPane().add(jlNome, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 50, 60, 18));

    jlEndereco.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jlEndereco.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jlEndereco.setText("Endereço:");
    getContentPane().add(jlEndereco, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 75, 60, 18));

    jlTelefone.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jlTelefone.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jlTelefone.setText("Telefone:");
    getContentPane().add(jlTelefone, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 100, 60, 18));

    jlCpf.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jlCpf.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jlCpf.setText("CPF:");
    getContentPane().add(jlCpf, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 125, 60, 18));

    bgContas.add(jrbCorrente);
    jrbCorrente.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jrbCorrente.setMnemonic('C');
    jrbCorrente.setSelected(true);
    jrbCorrente.setText("Conta Corrente");
    getContentPane().add(jrbCorrente, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 150, -1, 20));

    bgContas.add(jrbPoupanca);
    jrbPoupanca.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jrbPoupanca.setMnemonic('P');
    jrbPoupanca.setText("Conta Poupança");
    getContentPane().add(jrbPoupanca, new org.netbeans.lib.awtextra.AbsoluteConstraints(225, 150, 118, 20));

    jbConsultar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jbConsultar.setMnemonic('S');
    jbConsultar.setText("Consultar");
    jbConsultar.setToolTipText("Clique para consultar.");
    getContentPane().add(jbConsultar, new org.netbeans.lib.awtextra.AbsoluteConstraints(35, 190, 100, -1));

    jbAtualizar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jbAtualizar.setMnemonic('A');
    jbAtualizar.setText("Atualizar");
    jbAtualizar.setToolTipText("Clique para atualizar.");
    jbAtualizar.setEnabled(false);
    getContentPane().add(jbAtualizar, new org.netbeans.lib.awtextra.AbsoluteConstraints(145, 190, 100, -1));

    jbFechar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jbFechar.setMnemonic('F');
    jbFechar.setText("Fechar");
    jbFechar.setToolTipText("Clique para fechar.");
    getContentPane().add(jbFechar, new org.netbeans.lib.awtextra.AbsoluteConstraints(255, 190, 100, -1));

    jtfNome.setToolTipText("Digite o seu nome.");
    getContentPane().add(jtfNome, new org.netbeans.lib.awtextra.AbsoluteConstraints(75, 50, 300, 20));

    jtfEndereco.setToolTipText("Digite o seu endereço.");
    getContentPane().add(jtfEndereco, new org.netbeans.lib.awtextra.AbsoluteConstraints(75, 75, 300, 20));

    jtfTelefone.setToolTipText("Digite o seu telefone.");
    getContentPane().add(jtfTelefone, new org.netbeans.lib.awtextra.AbsoluteConstraints(75, 100, 300, 20));

    jtfCpf.setToolTipText("Digite seu CPF.");
    getContentPane().add(jtfCpf, new org.netbeans.lib.awtextra.AbsoluteConstraints(75, 125, 300, 20));

    pack();
}// </editor-fold>                        


public static void main(String args[]) {        
    java.awt.EventQueue.invokeLater(new Runnable() {

    @Override
    public void run() {
        new Janela().setVisible(true);
    }
    });
}

private void centralizar() {
    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension janela = getSize();

    if (janela.height > screen.height)
        setSize(janela.width, screen.height);
    if (janela.width > screen.width)
        setSize(screen.width, janela.height);

    setLocation((screen.width - janela.width) / 2,(screen.height - janela.height) / 2);
}

// Variables declaration - do not modify                     
private javax.swing.ButtonGroup bgContas;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JButton jbAtualizar;
private javax.swing.JButton jbConsultar;
private javax.swing.JButton jbFechar;
private javax.swing.JLabel jlAgencia;
private javax.swing.JLabel jlConta;
private javax.swing.JLabel jlCpf;
private javax.swing.JLabel jlEndereco;
private javax.swing.JLabel jlNome;
private javax.swing.JLabel jlTelefone;
private javax.swing.JRadioButton jrbCorrente;
private javax.swing.JRadioButton jrbPoupanca;
private javax.swing.JTextField jtfAgencia;
private javax.swing.JTextField jtfConta;
private javax.swing.JTextField jtfCpf;
private javax.swing.JTextField jtfEndereco;
private javax.swing.JTextField jtfNome;
private javax.swing.JTextField jtfTelefone;
// End of variables declaration                   

}[/code]

Uma boa pratica para formatação de Jtext é o uso do JFormattedTextField.
estou postando uma forma que é fácil e não precisa a toda vez que criar um campo de um mesmo tipo criar uma nova mascara para ele.


import java.text.ParseException;

import javax.swing.text.MaskFormatter;

public class Mascara {
	
	
	
	//modo de usar JFormattedTextField texto = new JFormattedTextField( Mascara.cnpjMask() ); 
	 private static MaskFormatter CNPJ_MASK;  
	 private static MaskFormatter CPF_MASK;
	 private static MaskFormatter CEP_MASK;
	 private static MaskFormatter OBJ_SOCIAL_MASK;
	  
	    public static MaskFormatter cnpjMask() throws ParseException {  
	        if( CNPJ_MASK == null ) { // inicializa  
	        	CNPJ_MASK = new MaskFormatter( "##.###.###/####-##" );  
	        	  
	        }  
	  
	        return CNPJ_MASK;  
	    }  
	    
	    public static MaskFormatter cpfMask() throws ParseException {  
	        if( CPF_MASK == null ) { // inicializa  
	        	CPF_MASK = new MaskFormatter( "###.###.###-##" );  
	        	  
	        }  
	  
	        return CPF_MASK;  
	    }  
	    
	    public static MaskFormatter cepMask() throws ParseException {  
	        if( CEP_MASK == null ) { // inicializa  
	        	CEP_MASK = new MaskFormatter("##.###-###");  
	        }
	        return CEP_MASK; 
	        }  
	        public static MaskFormatter objSocialMask() throws ParseException {  
		        if( OBJ_SOCIAL_MASK == null ) { // inicializa  
		        	OBJ_SOCIAL_MASK = new MaskFormatter( "####-#/##" );  
		        	  
		        }  
	  
	        return OBJ_SOCIAL_MASK;  
	    }  

}

utilização seuJformated = new JFormattedTextField(Mascara.cepMask());

Espero que seja util

Use o Eclipse o código fica limpo e de mais fácil alteração para o Desenvolvedor

[quote=jorgereidinaldo]Uma boa pratica para formatação de Jtext é o uso do JFormattedTextField.
estou postando uma forma que é fácil e não precisa a toda vez que criar um campo de um mesmo tipo criar uma nova mascara para ele.


import java.text.ParseException;

import javax.swing.text.MaskFormatter;

public class Mascara {
	
	
	
	//modo de usar JFormattedTextField texto = new JFormattedTextField( Mascara.cnpjMask() ); 
	 private static MaskFormatter CNPJ_MASK;  
	 private static MaskFormatter CPF_MASK;
	 private static MaskFormatter CEP_MASK;
	 private static MaskFormatter OBJ_SOCIAL_MASK;
	  
	    public static MaskFormatter cnpjMask() throws ParseException {  
	        if( CNPJ_MASK == null ) { // inicializa  
	        	CNPJ_MASK = new MaskFormatter( "##.###.###/####-##" );  
	        	  
	        }  
	  
	        return CNPJ_MASK;  
	    }  
	    
	    public static MaskFormatter cpfMask() throws ParseException {  
	        if( CPF_MASK == null ) { // inicializa  
	        	CPF_MASK = new MaskFormatter( "###.###.###-##" );  
	        	  
	        }  
	  
	        return CPF_MASK;  
	    }  
	    
	    public static MaskFormatter cepMask() throws ParseException {  
	        if( CEP_MASK == null ) { // inicializa  
	        	CEP_MASK = new MaskFormatter("##.###-###");  
	        }
	        return CEP_MASK; 
	        }  
	        public static MaskFormatter objSocialMask() throws ParseException {  
		        if( OBJ_SOCIAL_MASK == null ) { // inicializa  
		        	OBJ_SOCIAL_MASK = new MaskFormatter( "####-#/##" );  
		        	  
		        }  
	  
	        return OBJ_SOCIAL_MASK;  
	    }  

}

utilização seuJformated = new JFormattedTextField(Mascara.cepMask());

Espero que seja util

Use o Eclipse o código fica limpo e de mais fácil alteração para o Desenvolvedor[/quote]

entendi, mas eu posso aplicar essa máscara para um jTextField ou tem que ser em um jFormattedTextField?