Tenho o seguinte metodo
private JTextField getJtPrazo01() {
if (jtPrazo01 == null) {
jtPrazo01 = new JTextField();
jtPrazo01.setBounds(new java.awt.Rectangle(30,30,35,19));
}
return jtPrazo01;
}
Gostaria de formatar com uma mascara numérica 999
Já tentei MaskFormatter e JFormattedTextField, mas confesso que não consegui usar e preciso de ajuda
Desculpe devo ter me expressado errado, Tenho uma tela feita em Eclipse 3.2 que possui a variável JTextField de nome jtPrazo01,
Gostaria de formatar com uma mascara numérica 999, assim o usuário ficara limitado a informar um dado numérico de no Maximo 3 dígitos
Desculpe minha falta de conhecimento, mas confesso que não sei onde colocar em meu método a sintaxe JFormattedTextField field = new JFormattedTextField(new MaskFormatter(“999”)); que vc me passou
vc poderia me ajudar ?
Gerr@
Obrigado, funcionou
Mas o campo aparece 999, quando utilizo a mascara ### ,ele so permite alterar o campo com 3 digitos e quando digito 1 ou 2 valores ela apaga quando saio do campo
O metodo ficou assim :
private JTextField getJtPrazo01() {
if (jtPrazo01 == null) {
try{
jtPrazo01 = new JFormattedTextField(new MaskFormatter("###"));
}catch (Exception e){};
Acho que talvez então a máscara não seja a abordagem mais adequada… Talvez seja o caso de você criar um document filter personalizado para o seu campo.
O JFormattedTextField possui uma política de validação para usar a máscara.
Caso o valor entrado não corresponda totalmente à mascara, o campo voltará ao valor anterior quando perder o foco.
Mas isso pode ser alterado, usando o método setFocusLostBehavior(int)
Existem 4 comportamentos, segundo a documentação:
[quote]JFormattedTextField.REVERT
Revert the display to match that of getValue, possibly losing the current edit.
JFormattedTextField.COMMIT
Commits the current value. If the value being edited isn’t considered a legal value by the AbstractFormatter that is, a ParseException is thrown, then the value will not change, and then edited value will persist.
JFormattedTextField.COMMIT_OR_REVERT
Similar to COMMIT, but if the value isn’t legal, behave like REVERT.
JFormattedTextField.PERSIST
Do nothing, don’t obtain a new AbstractFormatter, and don’t update the value.
The default is JFormattedTextField.COMMIT_OR_REVERT, refer to setFocusLostBehavior(int) for more information on this.[/quote]
Oi gente, meus amigos eu tb estava com o mesmo problema. Toda vez q eu apertava a tecla enter o meu o meu campo que tem uma mascara(#######) pra sete digitos ficava em branco se eu digita-se apenas 4 digitos, este era o problema que eu resolvi da seguinte forma, que esta funcionando perfeitamente, espero ter ajudado vcs… um abraço!
campo1.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent evt2) {
int keyCode = evt2.getKeyCode();
if(keyCode == KeyEvent.VK_ENTER || keyCode == KeyEvent.VK_TAB){
if(campo1.getText().trim().equals("")){
JOptionPane.showMessageDialog(null,"Este campo não pode estar em branco","Mensagem", 0);
campo1.requestFocus();
}else{
System.out.println("campo 1 == "+campo1.getText());
maskNumero.setPlaceholder(campo1.getText());
consultaVolume(evt2);
}
}
}});
Oi gente eu fiz o teste com esse codigo e tb funcionouuu!!! blza…
campo1.setFocusLostBehavior(JFormattedTextField.COMMIT);
campo1.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent evt2) {
int keyCode = evt2.getKeyCode();
if(keyCode == KeyEvent.VK_ENTER || keyCode == KeyEvent.VK_TAB){
if(campo1.getText().trim().equals("")){
JOptionPane.showMessageDialog(null,"Este campo não pode estar em branco","Mensagem", 0);
campo1.requestFocus();
}else{
[quote=Leandro® Combinato]Oi gente, meus amigos eu tb estava com o mesmo problema. Toda vez q eu apertava a tecla enter o meu o meu campo que tem uma mascara(#######) pra sete digitos ficava em branco se eu digita-se apenas 4 digitos, este era o problema que eu resolvi da seguinte forma, que esta funcionando perfeitamente, espero ter ajudado vcs… um abraço!
So pra ver como está esse código Obrigado.
campo1.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent evt2) {
int keyCode = evt2.getKeyCode();
if(keyCode == KeyEvent.VK_ENTER || keyCode == KeyEvent.VK_TAB){
if(campo1.getText().trim().equals("")){
JOptionPane.showMessageDialog(null,"Este campo não pode estar em branco","Mensagem", 0);
campo1.requestFocus();
}else{
System.out.println("campo 1 == "+campo1.getText());
maskNumero.setPlaceholder(campo1.getText());
consultaVolume(evt2);
}
}
}});