Formatar campo para telefone
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.
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
Curtidas 0
Respostas
Nilo Souza
22/06/2011
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
2- No Custom Creation Code coloquei
3- No pre-creation code coloquei:
Quando testei deu erro:
Pode me ajudar por favor, estou a dois dias tentando em foruns e lendo postes e não consegui resolver.
Obrigado!
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!
GOSTEI 0
Davi Costa
22/06/2011
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
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
GOSTEI 0
Davi Costa
22/06/2011
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
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
GOSTEI 0
Nilo Souza
22/06/2011
Realmente não esta salvando no banco.
Se eu colocar assim:
da erro.
Mas se colocar assim:
ele salva.
Se eu colocar assim:
formatoFone = new MaskFormatter("(##)####-####"); da erro.
Mas se colocar assim:
formatoFone = new MaskFormatter("####-####"); ele salva.
GOSTEI 0
Davi Costa
22/06/2011
Talvez a coluna da tabela não suporte tantos caracteres.
Mostra a declaração da tabela.
att Davi
Mostra a declaração da tabela.
att Davi
GOSTEI 0
Nilo Souza
22/06/2011
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) );
GOSTEI 0
Dyego Carmo
22/06/2011
REsolvido ?
Se sim , favor fechar o chamado !
Valeu !
Se sim , favor fechar o chamado !
Valeu !
GOSTEI 0
Nilo Souza
22/06/2011
ainda não revolvi, contina dando a mensagem de erro conforme acima.
GOSTEI 0
Davi Costa
22/06/2011
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
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
GOSTEI 0
Nilo Souza
22/06/2011
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.
GOSTEI 0
Davi Costa
22/06/2011
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
Att Davi
GOSTEI 0
Robson Teixeira
22/06/2011
antes de gravar no banco quando vc está preenchendo o campo você consegue obter no formato (##)####-#### ???
GOSTEI 0
Nilo Souza
22/06/2011
Caro Robson, tudo bem?
Consigo sim, ao preencher o campo o formato esta presenta do jeito que pensei, mas da o problema listado acima.
Consigo sim, ao preencher o campo o formato esta presenta do jeito que pensei, mas da o problema listado acima.
GOSTEI 0
Davi Costa
22/06/2011
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
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
GOSTEI 0
Nilo Souza
22/06/2011
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á!
(##) ####-####, 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á!
GOSTEI 0
Nilo Souza
22/06/2011
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.
Meu campos esta com o formato telefone varchar(30)
Espero ter respondido. Obrigado desde já!
(##) ####-####, 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.
Meu campos esta com o formato telefone varchar(30)
Espero ter respondido. Obrigado desde já!
GOSTEI 0
Davi Costa
22/06/2011
Seguinte então esse erro vc vai entender melhor vendo esse link:
http://download.oracle.com/javase/1.4.2/docs/api/java/sql/DataTruncation.html
Será que esse campo está realmente recebendo varchar de 30?
Testa passar esse texto formatado para um String, e joga essa String para o comando que dá o insert jdbc com um trim.
Por exemplo:
String telefone = .... //passa essa String formatadacom a máscara para essa variável
... e quando for montar seu insert passa telefone.trim()
Ou pode fazer a solução que eu citei no post anterior, pega essa String e remove os parênteses.
att Davi
http://download.oracle.com/javase/1.4.2/docs/api/java/sql/DataTruncation.html
Será que esse campo está realmente recebendo varchar de 30?
Testa passar esse texto formatado para um String, e joga essa String para o comando que dá o insert jdbc com um trim.
Por exemplo:
String telefone = .... //passa essa String formatadacom a máscara para essa variável
... e quando for montar seu insert passa telefone.trim()
Ou pode fazer a solução que eu citei no post anterior, pega essa String e remove os parênteses.
att Davi
GOSTEI 0
Dyego Carmo
22/06/2011
Este erro de data truncation tem a ver com o tamanho do campo, o erro que você esta falando é no java ou no banco ?
GOSTEI 0
Nilo Souza
22/06/2011
Caro Dyego,
o erro é no banco, quando fui no console do flemarobin e dei um inser into direto, gravou (32) 4444-9999 normal, inclusive com os parenteces, por isso eu tb acho que o erro é no java, mas não sei como resolver.
GOSTEI 0
Nilo Souza
22/06/2011
Não resolvi o problema, como mudei para o banco de dados postgresq 9, agora esta salvando com os parenteses, mas o problema persistiria se fosse no firebird. Ou seja, ainda não esta resolvido.
GOSTEI 0
Dyego Carmo
22/06/2011
Tentou tirar estes parenteses antes de salvar ?
GOSTEI 0
Nilo Souza
22/06/2011
Se eu tirar funciona, não tem jeito ou é bug do java?
GOSTEI 0
Robson Teixeira
22/06/2011
Olá Nilo isso é uma sugestão experimente guardar o codigo de area em outra tabela e o numero de telefone em outra.
exemplo
digito o codigo de area 90 ai a aplicação valida no banco na tabela de ddd's vendo se existe o ddd digitado se existir você inserer o telefone no banco associando com o codigo de area na outra tabela.
isso é uma sugestão outra que eu tentaria tambem é o driver do firebird tentaria uma versão mais nova ou uma mais compativel com a versão do banco.
espero que tenha ajudado
att
robson
exemplo
digito o codigo de area 90 ai a aplicação valida no banco na tabela de ddd's vendo se existe o ddd digitado se existir você inserer o telefone no banco associando com o codigo de area na outra tabela.
isso é uma sugestão outra que eu tentaria tambem é o driver do firebird tentaria uma versão mais nova ou uma mais compativel com a versão do banco.
espero que tenha ajudado
att
robson
GOSTEI 0
Davi Costa
22/06/2011
Complementando tudo que já foi dito.
Caso vc queira manter do jeito que está, vc retira o parênteses da String ao submeter ao banco e quando carregar do banco vc vai ter que colocar a String.
att Davi
Caso vc queira manter do jeito que está, vc retira o parênteses da String ao submeter ao banco e quando carregar do banco vc vai ter que colocar a String.
att Davi
GOSTEI 0