Formatando JTextField usando Mask

10 respostas
T

OI gente, to começando a mexer com swing agora e tenho uma dúvida…pelo net beans eu crio um campo texto e automaticamente meu código recebe o bloco:

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {

}

só q este campo eu gostaria que fosse uma campo pré formatado de data, do tipo " / / "…isto é… que ja aparecesse pro usuário apenas completar… sei o q JformattedMask pode funcionar mas não sei como usar ele com o que eu tenho acima…

em relação ao tratamento da data já estou tratando em baixo nível então não tem problema se vir errado…

Poderiam me ajudar?

10 Respostas

E

cara… eu utilizo o componente DatePicker pra usar como data… se não me engano esse componente é de alguma das APIs do JasperSoft
mas você pode formatar o campo sem problemas… basta usar o JFormattedTextField e na hora da criação dele passar um MaskFormatter com a máscara desejada…

V

Segue um exemplo

MaskFormatter maskData = new MaskFormatter("##/##/####");
maskData.install(seuJFormattedTextField);
T

Po gente… deesculpa a ignorancia… mas da onde vem o seuJFormattedTextField??

em:
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {

}

V

Seguinte, esse “seuJFormattedTextField” é o componente que vc tem no JFrame (sua tela), voce nao tem que colocar aquele codigo em nenhum evento do componente, é so colca-lo no construtor da classe de sua tela.

T

Desculpa novamente a ignorancia…mas minha entrada de classe e construtor é:

public class Frame_Parametros extends javax.swing.JFrame {

/** Creates new form Frame_Parametros */

public Frame_Parametros() {

    initComponents();
    
}

.
.
.
.
.

Como ficaria??

valeu a ajuda e paciência!

V

Primeiramente vc deve colocar no form um compoenete JFormattedTextField, agora vamos supor que vc alterou o nome para jDataCadastro.

/** Creates new form Frame_Parametros */

public Frame_Parametros() {
   initComponents();
   MaskFormatter maskData = new MaskFormatter("##/##/####");  
   maskData.install(jDataCadastro); 
}
T

Deu certo gente, mas quando eu coloko mais jformattedtextfield ele só faz o primeiro… saberiam me dizer por que?

T

Eu inicializo todos mas não está dando certo!

V

É so vc replicar a linha maskData.install

public Frame_Parametros() {  
    initComponents();  
    MaskFormatter maskData = new MaskFormatter("##/##/####");    
    maskData.install(jDataCadastro);   
    maskData.install(jDataNascimento);

    MaskFormatter maskCep = new MaskFormatter("#####-###"); 
    maskCep.install(jCepResidencial);
    maskCep.install(jCepComercial);
}
T

Então… eu crio campos de feriados nacionais… 15 feriados…
aí eu inicializo todos da seguinte maneira…

maskData.install(jFormattedTextField4);

maskData.install(jFormattedTextField5);

maskData.install(jFormattedTextField6);

maskData.install(jFormattedTextField7);

maskData.install(jFormattedTextField8);

maskData.install(jFormattedTextField9);

maskData.install(jFormattedTextField10);

maskData.install(jFormattedTextField11);

maskData.install(jFormattedTextField12);

maskData.install(jFormattedTextField13);

maskData.install(jFormattedTextField13);

maskData.install(jFormattedTextField14);

maskData.install(jFormattedTextField15);

maskData.install(jFormattedTextField16);

maskData.install(jFormattedTextField17);

ele formata os campos… mas ele ferra na hora q eu escrevo… isto é no formato dd/mm/aaaa

ele vai “empurrando” a barra para frente…

se eu uso apenas um textfield funciona normal…

Criado 14 de janeiro de 2010
Ultima resposta 18 de jan. de 2010
Respostas 10
Participantes 3