Swing Calcular idade

5 respostas
R

bem, tenho dúvidas com relação a esse problema...:
Quero exibir uma janela Com os campos :
Informe seu nome:
Informe o ano de nascimento:
Quando apertar Ok ele retorna o nome e a idade do usuário em JOpitionPane...

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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




public class Pessoa extends JFrame{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JLabel lbTitulo;
	private JTextField tfNum1;
	private JTextField tfNum2;

	
	
	private JButton btOk;
	private JButton btFechar;
	public Pessoa(){
		
		setTitle("Calcula Idade");
		
		Container c = this.getContentPane();
		c.setLayout(null);


		setSize(380, 270);
		setResizable(false);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
		CriarLabel(c);
		CriarTextField(c);
		CriarBotao(c);
	
		
	}

	public void CriarLabel(Container c){
		this.lbTitulo = new JLabel("Idade");
		
		this.lbTitulo.setBounds(130, 20, 200, 20);
		this.lbTitulo.setFont(new Font("Arial", Font.BOLD, 16));
		this.lbTitulo.setForeground(Color.BLUE);
		
		
		c.add(this.lbTitulo);
		
	}
	public void CriarTextField(Container c){
		
		this.tfNum1 = criaTextFieldNumero(c, " Nome ", 60);
		this.tfNum2 = criaTextFieldNumero(c, " Ano: ", 85);
	
	
	} 
		private JTextField criaTextFieldNumero(Container c, String rotulo, int posY) {
		JLabel lb = new JLabel(rotulo);
		lb.setBounds(20, posY, 60, 20);
		c.add(lb);

		JTextField tfNum = new JTextField(20);
		tfNum.setToolTipText(rotulo);
		tfNum.setBounds(85, posY, 100, 20);
		
		c.add(tfNum);

		return tfNum;
	}
public void CriarBotao(Container c){
		
		this.btOk = new JButton("Ok");
		this.btFechar = new JButton("Fechar");

		this.btOk.setBounds(115, 200, 60, 20);
		this.btFechar.setBounds(195, 200, 80, 20);

		this.btOk.setToolTipText("Clique aqui para confirmar");
		this.btFechar.setToolTipText("Clique aqui para fechar o programa");

		this.btOk.setActionCommand("OK");
		this.btFechar.setActionCommand("FECHAR");
		
		OuvinteBotao ouvinteBotao = new OuvinteBotao();

		this.btOk.addActionListener(ouvinteBotao);
		this.btFechar.addActionListener(ouvinteBotao);

		c.add(this.btOk);
		c.add(this.btFechar);
		
		
	}
 private class OuvinteBotao implements ActionListener {  
	  
    @Override  
    public void actionPerformed(ActionEvent ae) {  

        if (ae.getSource() instanceof JButton) {  
            JButton jb = (JButton) ae.getSource();  
            if ("OK".equals(jb.getActionCommand())) {  
     
            
             //não sei comoo FAÇO PRA CALCULAR OS VALORES AQUI
             
               
            } else if ("FECHAR".equals(jb.getActionCommand())) {  
                
            	
            	System.exit(1);  
            }  
        }  
    }  
}
}

essa classe acima eu n sei como faz pra pegar a data e diminuir da data atual pra transformar em anos..
Esta abaixo é a classe que vai gravar e ter o método de callcular a data..

import java.util.Date;
import java.util.Scanner;

import javax.swing.JOptionPane;


public class Guarda {
	
	private String nomes;
	private Date ano;
	
	public Guarda(){
		
		
		
	}

	public String getNomes() {
		return nomes;
	}

	public void setNomes(String nomes) {
		this.nomes = nomes;
	}

	public Date getAno() {
		return ano;
	}

	public void setAno(Date ano) {
		this.ano = ano;
	}


		

	

}

5 Respostas

T

Olá para trabalhar com datas recomendo vc dar uma olhada no JodaTime http://joda-time.sourceforge.net/.
Muito mais simples de se fazer calculos como o que vc precisa.

[]'s

R

Mas vc não sabe de nenhuma solução simples usando só estes recursos?

E

thiagocg:
Olá para trabalhar com datas recomendo vc dar uma olhada no JodaTime http://joda-time.sourceforge.net/.
Muito mais simples de se fazer calculos como o que vc precisa.

[]'s

hey
1 thiagocg!? vc conhece um joda em portugues?

I

Já tentou pesquisar aqui mesmo no GUJ?Um exemplo:
http://www.guj.com.br/java/130741-calculo-com-datas

Se for um tutorial tem esse aqui:
http://www.furutani.com.br/2010/02/simplificando-calculos-com-datas-com-joda-time-java/

Mas tem vários exemplos já postados aqui no GUJ. :wink:

J

achei um pequeno exemplo aqui, qualquer coisa vc pode adaptar…

Calendar dataInicio = Calendar.getInstance();
dataInicio.set(2011, Calendar.MAY, 1);

Calendar dataFinal = Calendar.getInstance();

long diasDiferenca = (dataFinal.getTimeInMillis() - dataInicio.getTimeInMillis()) / (1000 * 60 * 60 * 24);

System.out.println("Dias de Diferença: " + diasDiferenca);
Criado 4 de junho de 2011
Ultima resposta 6 de jun. de 2011
Respostas 5
Participantes 5