Formatação de TextField

25 respostas
cu_ringa

Alguém poderia me dizer como é que se faz para fazer com que um TextField fixe no formato de data como: dd/mm/aaaa; Agora a barra invertida “/”, não pode desaparecer quando eu começar a digitar a data.

Por favor, que sober mande a resposta para ontem, valeu!!!

25 Respostas

Rafael_Afonso

Olá:

Do Java Almanac: Creating a Text Field to Display and Edit a Date. Veja se isso serve.

Grato,

cu_ringa

para mostrar datas esse tutorial ajuda, mas o que eu quero é um JField já no formato dd/mm/yyyy ou seja um field que quando ele aparecer as barras invertidas já estejam visiveis nele e quando a data for digitada as barrinhas investidas não se movam ou seja elas tem que ser estáticas.

ou será que isso não é possível no java, só em delphi.

valeu galera!!!

cu_ringa

dei uma olhada, mas pelo que eu entedi, ele só serve para mostrar formatado e não para digitar;

Ironlynx

Hum… vc vai ter q criar um Document próprio…
criar um vetor para inserir cada caractere em posições específicas,e inicializar seu componente com o formato “//___” da data q vc quer.Use FixedLengthDocument para filtrar seus dados.Veja se essa discussão sobre o aasunto te ajuda:
http://forum.java.sun.com/thread.jsp?forum=57&thread=418002&message=1849574

cu_ringa

a classe MaskFormatter está dentro de qual package, qual pacote devo importar para usa-lá.

Ironlynx

javax.swing.text.MaskFormatter :wink:

Rafael_Steil

http://www.google.com/search?q=MaskFormatter

Rafael

cu_ringa

Porque quando eu estou instancando MaskFormatter como abaixo:

MaskFormatter mf = new MaskFormatter("####-##");

está dando esse erro:

unreported exception java.text.ParseException; must be caught or declared to be thrown

Ironlynx

cu_ringa,vc tem q propagar ou capturar a exceção!(ParseException)

try { mf = new MaskFormatter("#####-##"); } catch (java.text.ParseException e) { e.printStackTrace(); }

cv1

Ironlynx (cacete, qual o seu nome? eu odeio chamar os outros pelo nick), voce nao esta nem propagando nem tratando a excecao desse jeito, vc esta simplesmente ignorando a coitadinha. Ela queria te dizer que nao foi possivel parsear a string de formato, mas vc nao deu ouvidos. Tadinha! :smiley:

Ironlynx

D´Artagnan, Cv!E eu jah te falei caramba!Honestamente,esse tipo de exceção,quando dah assim,eu resolvo da forma q eu postei,e o JCreator aceita…Mas como estou há 2 meses sem codar,posso tah embolando o meio de campo…(Semana q vem td muda,meu PF tah na área…e eu vou pentelhar…)

cu_ringa

Valeu galera, foi de muita serventia!!!

Sim tenho outra pergunta o que devo usar para manipular datas, tipo assim:

data 1: 14/01/2004
data 2: 03/01/2004

em que a data 2 tem que ser menor que a data 1;

cv1

O JCreator aceita pq, afinal, eh codigo valido. Voce pode nao querer fazer nada quando leva uma excecao, mas nao quer dizer que vc deva ou queira fazer isso. :wink:

O problema aqui, caso alguem ainda nao tenha reparado, eh que quando vc nao faz nada com uma excecao, ignorando-a, vc nao fica sabendo o que aconteceu. Excecoes em construtores sao especialmente ruins nesse ponto, pq se acontece alguma, o objeto semi-construido é jogado fora, e o construtor retorna null. E, quando um objeto é null, advinha o que pode acontecer com o seu codigo a qualquer momento se vc nao tomar cuidado? NullPointerExceptions. Ou seja, vc tem uma excecao escondendo a outra, que vc nao tratou direito. E aí, so uma boa dose de paciencia pra te ajudar a encontrar o problema :smiley:

Ironlynx

Putz,é óbvio cv…é só começar a ficar um tempinho sem programar q começam a aparecer shit errors… :roll:

cu_ringa,é soh vc criar um componente para testar(comparar) o mês,dia,ano em relação ao outro…
http://javaalmanac.com/egs/java.util/CompDates.html

cu_ringa

Como eu faço pra deixar o JTextField formatado desta maneira:

R$ 1.234,09

Ironlynx

http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html

cu_ringa

Como é que eu faço para o valor que está no JFormattedTextField não desaparecer quando eu mudo o cursor para outro field, lembrando que eu estou utilizando mascara( MaskFormatter("##/##/####") );

valeu!!!

cu_ringa

eu estou precisando disso desesperadamente!!!

cu_ringa

ei, eu já consegui!!!

cu_ringa

ei, tó com outro problema, se no field a data está formatada assim:
14/05/03, quando eu usar o método getText(), ele vai retornar a String “14/05/03”, mas eu quero manipular a data como eu falei anteriormente, será que eu vou ter que manipular essa String, dividir ela em três String converter para inteiro e depois chamar o construtor:
GregorianCalendar(int year, int month, int date) para criar um objeto desse tipo e então manipular a data.

ou será que existe um jeito menos complicado, estou esperando a resposta para ontem!!!

cv1

Procure aqui no forum (ou na API) por SimpleDateFormat.

PS: de nada :wink:

cu_ringa

SimpleDateFormat é para formatar uma Date, só que eu já tenho a data e ela está no formato dd/mm/yy; entedeu???

cv1

Leia o JavaDoc de novo. Na parte do metodo “public Date SimpleDateFormat.parse(String)”, mais especificamente.

N

Você jah deu umas olhadas na classe JFormattedTextField???

N

Acho bom vc dar uma pesquisada aqui no forum…
Jah foi discutido bastante coisa sobre MaskFormatter :wink:

Criado 10 de janeiro de 2004
Ultima resposta 11 de jan. de 2004
Respostas 25
Participantes 6