manipulação na máscara de um JFormattedTextField [RESOLVIDO]

4 respostas
W

Bom dia pessoal,

Tenho um JFormattedTextField com máscara: (##) ####-####
Eu gostaria que, por padrão, quando o usuário abrir a janela fique o ‘45’ entre parênteses. Já coloquei na máscara assim: (45) ####-####, mas assim o usuário não consegue apagar o 45 e colocar outro código se ele quiser, isso fica fixo. Preciso que fique por padrão mas que o usuário possa apagar se quiser…

Obrigado!

4 Respostas

mauricioadl

usar o setText nao funciona???

W

Não, pois com máscara existe meio que uma atomicidade, isto é, ou fica ([telefone removido] ou então fica ( ) - . Não tem como eu fazer um .setText("(45) - ") que ele não aceita!

mauricioadl
public class MyPanel extends JFrame {
	private JFormattedTextField jcomp1;
	private JTextField jcomp2;

	public MyPanel() throws ParseException {
		MaskFormatter mf = new MaskFormatter("(##) ####.####");
		jcomp1 = new JFormattedTextField(mf);
		jcomp2 = new JTextField();

		setLayout(new GridLayout(2, 1));
		setSize(800, 600);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		add(jcomp2);
		add(jcomp1);

		jcomp1.addFocusListener(new FocusListener() {

			@Override
			public void focusLost(FocusEvent arg0) {
				// TODO Auto-generated method stub

			}

			@Override
			public void focusGained(FocusEvent arg0) {
				jcomp1.setText("45");
				jcomp1.setCaretPosition(5);
			}
		});

	}
W
mauricioadl:
public class MyPanel extends JFrame {
	private JFormattedTextField jcomp1;
	private JTextField jcomp2;

	public MyPanel() throws ParseException {
		MaskFormatter mf = new MaskFormatter("(##) ####.####");
		jcomp1 = new JFormattedTextField(mf);
		jcomp2 = new JTextField();

		setLayout(new GridLayout(2, 1));
		setSize(800, 600);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		add(jcomp2);
		add(jcomp1);

		jcomp1.addFocusListener(new FocusListener() {

			@Override
			public void focusLost(FocusEvent arg0) {
				// TODO Auto-generated method stub

			}

			@Override
			public void focusGained(FocusEvent arg0) {
				jcomp1.setText("45");
				jcomp1.setCaretPosition(5);
			}
		});

	}

Eu tinha tentado fazer isso e não deu certo por aquilo que disse sobre todos os caracteres ou nada, mas acho que isso era um problema de programação meu.
Como vi que esse código q vc postou funcionou, dei uma geral no meu código e consegui consertar, ahhahha.

Muito obrigado!!!

Criado 17 de fevereiro de 2012
Ultima resposta 17 de fev. de 2012
Respostas 4
Participantes 2