Fórum Formatar campo para telefone #403586

22/06/2011

0

Colegas, boa noite !!!..

estou criando um form para cadastro e gostaria de saber como eu faço para formatar o campo destinado ao número do telefone, para que ele seja exibido inicial no seguinte formato:

( ) -

ou seja, o campo já exibiria o espaço destinado para o DDD, e assim que o usuário digitasse o telefone as informação ficaria:

(12) 9999-9999

Alguém saberia me dizer como ? Já li varias materias, mas não esta dando certo.
Nilo Souza

Nilo Souza

Responder

Posts

22/06/2011

Nilo Souza

Colegas, boa noite !!!..

estou criando um form para cadastro e gostaria de saber como eu faço para formatar o campo destinado ao número do telefone, para que ele seja exibido inicial no seguinte formato:

( ) -

ou seja, o campo já exibiria o espaço destinado para o DDD, e assim que o usuário digitasse o telefone as informação ficaria:

(12) 9999-9999

Alguém saberia me dizer como ? Já li varias materias, mas não esta dando certo.

Tentei fazer assim:

1 - Declarei uma variável

 MaskFormatter formatoFone;


2- No Custom Creation Code coloquei
new JFormattedTextField(formatoFone);


3- No pre-creation code coloquei:
try {
    formatoFone = new MaskFormatter("(##)####-####");   
}
catch(Exception erro)
{JOptionPane.showMessageDialog(null,"Não foi possivel setar a mascara para telefone, "+erro); }



Quando testei deu  erro:
22/06/2011 20:37:20 treinamento.dao.FornecedorDao addFornecedor
GRAVE: null
java.sql.DataTruncation: Data truncation
    at org.firebirdsql.jdbc.field.FBWorkaroundStringField.setString(FBWorkaroundStringField.java:97)
    at org.firebirdsql.jdbc.field.FBField.setObject(FBField.java:752)
    at org.firebirdsql.jdbc.AbstractCallableStatement.internalExecute(AbstractCallableStatement.java:429)
    at org.firebirdsql.jdbc.AbstractCallableStatement.executeUpdate(AbstractCallableStatement.java:341)
    at treinamento.dao.GenericaDao.executePrepered(GenericaDao.java:72)
    at treinamento.dao.FornecedorDao.addFornecedor(FornecedorDao.java:32)
    at treinamento.forms.frmFornecedor.btnConfirmarActionPerformed(frmFornecedor.java:505)
    at treinamento.forms.frmFornecedor.access$400(frmFornecedor.java:32)
    at treinamento.forms.frmFornecedor$6.actionPerformed(frmFornecedor.java:347)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    at java.awt.Component.processMouseEvent(Component.java:6289)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6054)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4652)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:603)
    at java.awt.EventQueue$1.run(EventQueue.java:601)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:617)
    at java.awt.EventQueue$2.run(EventQueue.java:615)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
    at java.awt.Dialog$1.run(Dialog.java:1046)
    at java.awt.Dialog$3.run(Dialog.java:1098)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Dialog.java:1096)
    at java.awt.Component.show(Component.java:1585)
    at java.awt.Component.setVisible(Component.java:1537)
    at java.awt.Window.setVisible(Window.java:842)
    at java.awt.Dialog.setVisible(Dialog.java:986)
    at treinamento.forms.frmPrincipal.jmiFornecedorActionPerformed(frmPrincipal.java:177)
    at treinamento.forms.frmPrincipal.access$100(frmPrincipal.java:17)
    at treinamento.forms.frmPrincipal$2.actionPerformed(frmPrincipal.java:100)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
    at java.awt.Component.processMouseEvent(Component.java:6289)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6054)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4652)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4482)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:603)
    at java.awt.EventQueue$1.run(EventQueue.java:601)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:617)
    at java.awt.EventQueue$2.run(EventQueue.java:615)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


Pode me ajudar por favor, estou a dois dias tentando em foruns e lendo postes e não consegui resolver.
Obrigado!
Responder

Gostei + 0

22/06/2011

Davi Costa

O primeiro e o segundo link são excelentes:

http://www.facom.ufu.br/~fabiano/Programacao%20Orientada%20a%20Objetos%20I/Aula%20GUI%20em%20Java%20III.pdf

http://javafree.uol.com.br/artigo/863862/JFormattedTextField.html

http://javafree.uol.com.br/topic-868445-Campo-telefone-MaskFormatter-dando-erro.html
Responder

Gostei + 0

22/06/2011

Davi Costa

Bom não sei se realmente seu problema é a máscara ou o banco pelo erro parece ser problema de banco ao salvar. É isso mesmo?

22/06/2011 20:37:20 treinamento.dao.FornecedorDao addFornecedor
GRAVE: null
java.sql.DataTruncation: Data truncation
    at org.firebirdsql.jdbc.field.FBWorkaroundStringField.setString(FBWorkaroundStringField.java:97)
    at org.firebirdsql.jdbc.field.FBField.setObject(FBField.java:752)
    at org.firebirdsql.jdbc.AbstractCallableStatement.internalExecute(AbstractCallableStatement.java:429)
    at org.firebirdsql.jdbc.AbstractCallableStatement.executeUpdate(AbstractCallableStatement.java:341)
    at treinamento.dao.GenericaDao.executePrepered(GenericaDao.java:72)
    at treinamento.dao.FornecedorDao.addFornecedor(FornecedorDao.java:32)

Att Davi
Responder

Gostei + 0

23/06/2011

Nilo Souza

Realmente não esta salvando no banco.
Se eu colocar assim:
formatoFone = new MaskFormatter("(##)####-####"); 

da erro.
Mas se colocar assim:
formatoFone = new MaskFormatter("####-####"); 

ele salva.



Responder

Gostei + 0

23/06/2011

Davi Costa

Talvez a coluna da tabela não suporte tantos caracteres.
Mostra a declaração da tabela.

att Davi
Responder

Gostei + 0

23/06/2011

Nilo Souza

Ai esta minha tabela
CREATE TABLE FORNECEDOR
(
  IDFORN DM_ID NOT NULL,
  NOME DM_NOME,
  ENDERECO DM_ENDERECO,
  NUMERO DM_INTEIRO,
  COMPLEMENTO DM_COMPLEMENTO,
  BAIRRO DM_BAIRRO,
  CIDADE DM_CIDADE,
  INSC_ESTADUAL DM_INTEIRO,
  TELEFONE Varchar(20) CHARACTER SET NONE,
  EMAIL DM_TEXTO,
  USUARIO_INCLUI DM_INTEIRO,
  USUARIO_ALTERA DM_INTEIRO,
  CONSTRAINT PK_FORNECEDOR PRIMARY KEY (IDFORN)
);

Responder

Gostei + 0

27/06/2011

Dyego Carmo

REsolvido ?

Se sim , favor fechar o chamado !

Valeu !
Responder

Gostei + 0

05/07/2011

Nilo Souza

ainda não revolvi, contina dando a mensagem de erro conforme acima.
Responder

Gostei + 0

05/07/2011

Davi Costa

Nilo,
 
vc já debugou e percebeu a diferença entre o que o java envia nas duas opções(com máscara e sem máscara)?
 
Me tira mais essa dúvida que eu não me lembro... a máscara tá funcionando?


Att Davi
Responder

Gostei + 0

05/07/2011

Nilo Souza

Ele esta enviando formatado e esta gravando no banco. Tanto que  no mesmo form eu tenho um jtable e o campo aparece formatado 4444-8888, mas se eu formato desta forma (##) ####-####, no não salva no banco.
Responder

Gostei + 0

05/07/2011

Davi Costa

Quais valores o java mandou p banco, tinhamos que ver isso para entender pq tá dando erro no banco. Se tiver dificuldades em debugar, pode dar um system.out.println para gente analisar.

Att Davi
Responder

Gostei + 0

06/07/2011

Robson Teixeira

antes de gravar no banco quando vc está preenchendo o campo você consegue obter no formato (##)####-####    ???
Responder

Gostei + 0

06/07/2011

Nilo Souza

Caro Robson, tudo bem?
Consigo sim, ao preencher o campo o formato esta presenta do jeito que pensei, mas da o problema listado acima.
Responder

Gostei + 0

07/07/2011

Davi Costa

Cara vc precisa mostrar para gente o que java está levando para o banco nas duas implementações para analisarmos bem o erro que está acontecendo.

Solução tem sim, de cara vc pode deixar a máscara do jeito que vc quer e tratar essa String removendo os dois parenteses "()", isso vc faz molim molim, mas acho que não deva ser a solução ideal. Vai resolver? Vai sim, mas temos que entender pq o banco não está aceitando a máscara que vc realmente quer. Essa sim é a solução ideal.
Por isso insistimos que vc ou debugue ou caso tenha dificuldade em debugar de um System.out.println() nesse valor para ver o que o java tá mandando para o seu banco.


Espero ter elucidado um pouco.

att Davi
Responder

Gostei + 0

07/07/2011

Nilo Souza

A mascara de entrada do campo esta assim:

(##) ####-####, quando digito fica assim: (34) 7877-9877,
debuguei o para o banco esta deste jeito " (34) 7877-9877".

Ai me retornou a mensagem:
Não foi possível realizar a operação:
java.sql.DataTruncation: Data truncation.

Espero ter respondido. Obrigado desde já!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar