[Resolvido] - JFormattedTextField perde a formtação ao setar valor de objeto

7 respostas
alfredo-avai

Dai galera, to com o seguinte problema:
Tenho um objeto de classe que da getelefone que esta exatamente assim no banco ([telefone removido]
jogo esse valor num formattedtextfield so que oq voçe digitar ele aceita letras , ou pode digitar (0000000)767 -
e ao final ele apaga-se.

agenda.setTelefoneResidencial(jtFone1.getText()); agenda.setTelefoneComercial(jtfone2.getText());
Lembrando que eles na classe estão como string.
Obrigado.

7 Respostas

douglasjam

Brother, um jeito que eu sempre faço é criar uma classe extendendo o JFormattedTextField. no construtor chamo o super.

e abaixo faço:

mascara = new MaskFormatter("(##)####-####");
        super.setFormatter(mascara);

ai o set e o get funciona tranquilo da maneira q ta no seu banco ai, tenta ai…

alfredo-avai

Valeu a ajuda.
mas não comprendi muito bem, faço uma classe herdando da classe JFormattedTextField e crio um atributo publico com mascara?
Abraços

douglasjam

É isso mesmo, melhor setar a mascara no construtor, para colocar na sua Gui e só arrastar a classe igual se arrasta um botão. Também pode-se criar uma pallet, pesquisa sobre isso ai depois.

alfredo-avai
import java.text.ParseException;

import javax.swing.JFormattedTextField;
import javax.swing.text.MaskFormatter;

public class texto extends JFormattedTextField {

	private static final long serialVersionUID = 1L;
	/**
	 * 
	 */
	public MaskFormatter masc;

	public texto() {
		try {
			masc = new MaskFormatter("(##)####-####");
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

	public MaskFormatter getMasc() {
		return masc;
	}

	public void setMasc(MaskFormatter masc) {
		super.setFormatter(this.masc = masc);
	}
	
}
Já na tela que faz o set no Jformattedtextfield faço o seguinte
texto text=new texto();
		jtcel1.setText(text.mascara((agd.getCelular1())));
Não conssegui entender bem. se o amigo poder dar uma ajuda ou algum codigo como exemplo . Valeu abraços
Anime

Oi,

http://download.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html

Boa sorte!

douglasjam

a cara é nesse naipe aí hehe, para setar e normal, setText, ou vc sobrescreve e implementa o seu...

package mud;

import java.awt.Color;
import java.awt.Font;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.text.MaskFormatter;

public class MudCpfTextField extends JFormattedTextField {

    private MaskFormatter mascara;
    private String cpf;

    public MudCpfTextField() {

        super();
        this.setFont(new Font("Verdana", Font.BOLD, 12));
        setDisabledTextColor(new Color(0x61, 0x61, 0x61));

        try {
            this.setText(null);
            mascara = new MaskFormatter("###.###.###-##");
            mascara.setPlaceholderCharacter('_');
            mascara.install(this);
            this.setCaretPosition(0);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void setEnabled(boolean valor) {
        super.setEnabled(valor);
        if (valor == true) {
            setBackground(Color.WHITE);
        } else {
            setBackground(new Color(0xD4, 0xD4, 0xD4));
        }

    }

    public final String getCpf() {
        return cpf;
    }

    public final void setCpf(String cpf) {
        if (cpf != null) {
            if (!utilities.CpfUtil.validaCpf(cpf)) {
                JOptionPane.showMessageDialog(null, "Cpf Inválido", "CPF Inválido, verifique o mesmo e digite novamente.", JOptionPane.ERROR_MESSAGE);
            } else {
                this.cpf = cpf;
                this.setText(cpf);
            }
        } else {
            this.setText("");
        }

    }
}
alfredo-avai

Conssegui pessoal, fiz o seguinte basicamente:

mascaraFones = new MaskFormatter("(**)****-****"); mascaraFones.setValidCharacters("[telefone removido] "); jtfone1.setValue(agd.getTelefoneResidencial()); jtfone1.setFocusLostBehavior(JFormattedTextField.COMMIT);
Valeu a todos, abraços.

Criado 5 de fevereiro de 2011
Ultima resposta 11 de fev. de 2011
Respostas 7
Participantes 3