Duvida com JText

9 respostas
D

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.

Alguém ae tem alguma dica de como eu faço isto!?

Obrigado.

9 Respostas

marcosvidolin

Olá

e o metodo setText() não funciona?

H

É só pegar a data de nascimento no JTextField, pegar a data do sistema. Subtrair uma da outra e colocar no JTextField de Anos.

Olha esse link:
http://www.furutani.com.br/2009/02/calculo-da-diferenca-entre-datas-em-java/

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:

Date data = new Date(System.currentTimeMillis());
D

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.

Há possibilidades!?

marcosvidolin

nuss agora entendi a sua duvida…

Da uma olhada aqui: http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html

ou: http://java.sun.com/docs/books/tutorial/uiswing/events/focuslistener.html

Veja se ajuda.
Att.

D

marcosvidolin:
nuss agora entendi a sua duvida…

Da uma olhada aqui: http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html

ou: http://java.sun.com/docs/books/tutorial/uiswing/events/focuslistener.html

Veja se ajuda.
Att.

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:

import java.awt.Rectangle;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;

public class TesteFocusListener extends JFrame implements FocusListener {

	private JPanel jContentPane = null;
	private JTextField tfCampo = null;
	private JLabel lbExibe = null;
	private JTextField tfCampo2 = null;

	
	public TesteFocusListener() {
		super();
		initialize();
	}

	
	private void initialize() {
		this.setSize(300, 200);
		this.setContentPane(getJContentPane());
		this.setTitle("Teste FocusListener");
	}


	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getTfCampo());
			jContentPane.add(getTfCampo2());
			jContentPane.add(getLbExibe());
		}
		return jContentPane;
	}


	private JTextField getTfCampo() {
		if (tfCampo == null) {
			tfCampo = new JTextField();
			tfCampo.setBounds(new Rectangle(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 aqui
			tfCampo.addFocusListener(this);
		}
		return tfCampo;
	}
	
	private JTextField getTfCampo2() {
		if (tfCampo2 == null) {
			tfCampo2 = new JTextField();
			tfCampo2.setBounds(new Rectangle(10, 40, 114, 30));
		}
		return tfCampo2;
	}
	
	private JLabel getLbExibe() {
		if(lbExibe == null) {
			lbExibe = new JLabel();
			lbExibe.setText("JLabel");
			lbExibe.setBounds(new Rectangle(10, 80, 111, 30));
		}
		return lbExibe;
	}
	
	@Override
	public void focusGained(FocusEvent e) {
		// Nao farei nada quando focar aqui
	}


	@Override
	public void focusLost(FocusEvent e) {
		lbExibe.setText(tfCampo.getText());
	}
	

	public static void main(String[] args) {
		TesteFocusListener tfl = new TesteFocusListener();
		tfl.setVisible(true);
	}
	
}
D

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

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!?

public JDateChooser dataInicio = new JDateChooser();
    public JDateChooser dataFim = new JDateChooser();

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

obrigado.

Criado 13 de maio de 2010
Ultima resposta 20 de mai. de 2010
Respostas 9
Participantes 3