Olha galera seguinte, eu tenho um JFormatedText que tem data de nascimento de um cidadão e também tenho um JText com a idade deste cidadão, mas eu gostaria de preencher este JText automaticamente com a idade de acordo com a data de nascimento.
Ensina a fazer contas entre datas e retorna uma quantidade de dias.
Você dividir por 365 e ter uma quantidade de anos. Mas por causa dos bissextos seria legal verificar a data atual do sistema
e comparar o dia e o mês também.
E pra pegar a data do sistema é só usar o:
Datedata=newDate(System.currentTimeMillis());
D
doug_sciani
Galera mais é o seguinte, a pessoa vai digitar e a idade vai ter que ser calculada no JTextField quando terminar de digitar a data de nascimento.
Olá dei uma olhada e como eu sou meio que iniciante, rsrs, não consegui tirar muita informação.
Eu estou fazendo um sistema em 3 camadas, e então eu devo add um focuslistener no caso do JTextField que eu vou colocar a data de nascimento não é!? Para que possa ser inserida a idade de acordo com a data inserido no JText de lá.
é isto mesmo!?
marcosvidolin
Olá…
fiz um exemplo bem simples baseado na documentação que te passei, veja se ajuda:
importjava.awt.Rectangle;importjava.awt.event.FocusEvent;importjava.awt.event.FocusListener;importjavax.swing.JPanel;importjavax.swing.JFrame;importjavax.swing.JTextField;importjavax.swing.JLabel;publicclassTesteFocusListenerextendsJFrameimplementsFocusListener{privateJPaneljContentPane=null;privateJTextFieldtfCampo=null;privateJLabellbExibe=null;privateJTextFieldtfCampo2=null;publicTesteFocusListener(){super();initialize();}privatevoidinitialize(){this.setSize(300,200);this.setContentPane(getJContentPane());this.setTitle("Teste FocusListener");}privateJPanelgetJContentPane(){if(jContentPane==null){jContentPane=newJPanel();jContentPane.setLayout(null);jContentPane.add(getTfCampo());jContentPane.add(getTfCampo2());jContentPane.add(getLbExibe());}returnjContentPane;}privateJTextFieldgetTfCampo(){if(tfCampo==null){tfCampo=newJTextField();tfCampo.setBounds(newRectangle(10,10,116,30));// Aqui adiciono o Listener. Como implemento FocusListener nesta classe, passo this como argumento.// O melhor e criar uma classe que implemente FocusListener e passe o objeto desta outra classe aquitfCampo.addFocusListener(this);}returntfCampo;}privateJTextFieldgetTfCampo2(){if(tfCampo2==null){tfCampo2=newJTextField();tfCampo2.setBounds(newRectangle(10,40,114,30));}returntfCampo2;}privateJLabelgetLbExibe(){if(lbExibe==null){lbExibe=newJLabel();lbExibe.setText("JLabel");lbExibe.setBounds(newRectangle(10,80,111,30));}returnlbExibe;}@OverridepublicvoidfocusGained(FocusEvente){// Nao farei nada quando focar aqui}@OverridepublicvoidfocusLost(FocusEvente){lbExibe.setText(tfCampo.getText());}publicstaticvoidmain(String[]args){TesteFocusListenertfl=newTesteFocusListener();tfl.setVisible(true);}}
D
doug_sciani
Muito bom cara, muito obrigado mesmo. E eu posso usar o action on change para fazer consultas sql com auto completar correto!?
Dae eu tenho que adicionar no mesmo esquema, no jtext e gerar uma consulta dentro dele correto!? Você aconselha fazer isto!?
abraços
marcosvidolin
Olá
Sim, É possível! Você pode implementar uma classe DAO com um método que retorne o conteúdo do campo que você deseja, tendo como base (chave) outro campo.
Neste caso você atribuiria um JTextField da mesma forma que o exemplo que passei, mas, ao invés de pegar o conteúdo de um outro campo você chama a função que retorna um valor de uma consulta no banco, por exemplo.
D
doug_sciani
Ok brother, valeu pelas dicas, vou tentar fazer isto aqui nas consultas que eu for gerar.
Mas antes de fazer esta consulta, to tendo que gravar e estou com umas dificuldades, pois eu coloquei um campo com data do JCalendar, não sei se conhece!?
Só que as datas estão vindo com a seguinte formatação:
Thu May 20 00:00:00 BRT 2010 (inicio)
Fri May 21 09:29:40 BRT 2010 (fim)
vc já usou JCalendar para algo em que pudesse me ajudar com a formatação disto, pois estou quebrando a cabeça para colocar isto no banco de dados e não aceita nem a paulada. rsrs