Acontece que preciso setar ela no meu controle txtCPF que foi atribuido assim: @FXML private TextField txtCPF;
Como faço pra instanciar a classe no controle txtCPF?
no FXML eu consegui mas não sei se é uma boa prática e no Scene Builder o controle fica oculto. queria setar no controller e não no fxml. Desde já agradeço.
Lucas_Camara Obrigado pela Resposta. No FXML eu consegui fazer eu queria na classe controller com o TextField txtCPF que adicionei no Scene Builder sem alterar o atributo. eu instancio a classe mask
Mask textfield = new Mask();
e queria setar o objeto textfield instanciado da classe mask no txtCPF entende.
ai que não consigo fazer.
j-menezes
Você tem um exemplo de um programinha resumido com o Erro e o que de fato quer fazer?
Não entendi direito sua dúvida.
A
arnaldkimbol
j-menezes obrigado pela resposta. Estou precisando usar mascaras em textfields. Tem umas classes que vi, mas não entendi o conceito direito e não consegui usa-las, ate porque pelas postagem serem antigas fiquei na dúvida se não teria algo mais moderno. Estou estudando javafx sou iniciante e tenho muita dificuldade em criar classe com mascara. Você tem exemplos de alguma mascara para eu entender como fazer?
Lucas_Camara Obrigado Pela resposta, mas foi justamente sobre essa classe que criei esse tópico. Não consigo usar essa classe na classe controller só no FXML por isso que perguntei. é possível usar sem ser no FXML?
Lucas_Camara
Estranho pq tu tah tentando instanciar a classe Mask, e no exemplo do link é MaskedTextField.
De qual pacote é essa classe Mask que vc está tentando usar?
A
arnaldkimbol
Lucas_Camara Obrigado pela Resposta. No FXML eu consegui fazer, eu queria na classe controller com o controle txtCPF que adicionei no Scene Builder sem alterar o atributo. eu instancio a classe MaskedTextField assim na classe controller do meu stage:
MaskedTextField text = new MaskedTextField();
agora queria usar no txtCPF que esta na classe Controller do meu projeto.
Lucas_Camara
Imagino que esse txtCPF seja um textfield, mas o MaskedTextField também é um textfield, só que com a capacidade de ter máscara. Ou seja, ou vc usa o textfield ou o maskedtextfield para o campo txtCPF (não tem essa de usar um sobre o outro).
obs.: Se vc olhar o código da classe MaskedTextField, vc verá que ela herda de Textfield.
A
arnaldkimbol
Na verdade preciso desenvolver mascaras para textfield.
j-menezes
Pra colocar uma Classe dentro do SceneBuilder tá uma coisa incrivelmente simples.
Nada daquela complexidade toda do JavaBeans pra usar com o Swing dentro do NetBeans por exemplo.
Então é assim, primeiro desenvolva tudo sem pensar em SceneBuilder, usando os sets e gets normalmente, depois disso basta colocar dentro do SceneBuilder e pronto!.
Vai funcionar tanto dentro do SceneBuilder como fora dele.
Essa coisa de mascara sempre me atormentou assim como Docking, sempre que via alguma solução de terceiro parece que faltava alguma coisa do meu gosto, então resolvi desenvolver um pra uso próprio.
Detalhe, basta estender TextField, então na hora de usar o SceneBuilder, no lugar do TextField vc coloca o seu extendido.
A
arnaldkimbol
Cara Ajuda me por favor.
tu tem uma classe com um exemplo de mascara. qualquer mascara pra entender o conceito.
j-menezes
Posso te ajudar em suas duvidas dentro do meu conhecimento e do meu tempo.
Penso que a melhor forma não seja te passar tudo pronto e sim lhe mostrar um esboço e esses esboços você acha na internet.
Mas vou ver um código de um americano aqui, então você terá uma ideia de como fazer um seu e profissa.
A
arnaldkimbol
Agradeço.
A
Solucao aceita
arnaldkimbol
j-menezes e Lucas-Camara.
Eu fiz a mascara.
Codigo da classe
importjavafx.application.Platform;importjavafx.scene.control.TextField;publicclassTesteMascara{privatestaticvoidlimitarTamanhoCampo(TextFieldtextField,Integertamanho){textField.textProperty().addListener((observable,valorAntigo,valorNovo)->{if(valorNovo==null||valorNovo.length()>tamanho){textField.setText(valorAntigo);}});}privatestaticvoidposicionarCursor(TextFieldtextField){Platform.runLater(()->{if(textField.getText().length()!=0){textField.positionCaret(textField.getText().length());}});}publicstaticvoidmascaraCPF(TextFieldtextField){TesteMascara.limitarTamanhoCampo(textField,14);textField.lengthProperty().addListener((observable,valorAntigo,valorNovo)->{StringtextoDigitado=textField.getText();textoDigitado=textoDigitado.replaceAll("[^0-9]","");textoDigitado=textoDigitado.replaceAll("([0-9]{3})([0-9]{3})([0-9]{3})([0-9]{2})$","$1.$2.$3-$4");textField.setText(textoDigitado);TesteMascara.posicionarCursor(textField);});}}/*** Para referenciar ela na classe controller sem o fxml * no metodo initialize onde o textFieldTeste é o meu txtCPF.setText().* * TesteMascara.mascaraCPF(textFieldTeste);*/
Editei o post e Resolvido. Agradeço a J-menezes e Lucas-Camara Pela Atenção. Qualquer melhoria será bem vindo mas por enquanto esta rodanto legal. Qualquer bug volto aqui.
j-menezes
Dá sim, mas não agora, provável que possa dar uma olhada somente no final da semana, se até lá não tiver resolvido me dá um toque que verei seu código.