Tenho uma dúvida. Como passar uma data para uma label? Estou fazendo uma espécie de calculadora. Eu quero que ao digitar minha data de nascimento o sistema me reporte com a minha idade. Estou começando com o ano e gostaria de fazer o programa puxar a data do sistema. O meu código tá funcionando, o problema é que ele só mostra a data atual quando eu clico no botão “calcular”. Eu quero que a data atual fique fixa no mostrador e que o botão só calcule. Como faço isso?
E a propósito, para colocar uma alternativa o que preciso fazer é só colocar if/else dentro do evento?? Tipo “Se a data for maior que 23/03 minha idade é 25, se não minha idade é 24”
Obs.: Estou usando o netbeans
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {
Date relogio = new Date();
String anostring = new SimpleDateFormat (“yyyy”).format(relogio);
lblAnoAqui.setText(anostring);
int anointeger = Integer.parseInt(anostring);
int ano = Integer.parseInt(txtAno.getValue().toString());
int idade = anointeger-ano;
lblIdade.setText(Integer.toString(idade));
}
Entendi em partes. Qual seria o evento que eu preciso fazer? Ainda tenho que parar pra ver pra que serve cade um deles. E mesmo com o evento, eu preciso deixar o código da data no evento do botão Calcular ou consigo puxar o evento do botão calcular?
Pelo que eu entendi você quer catar a data do sistema para subtrair pela data de nascimento que a pessoa inserir na JTextField, acho que é isso, tentei fazer aqui e consegui isso, está dando certinho.
package br.paulo;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class CalculaIdade extends JFrame {
JTextField textDia, textMes, textAno;
int dia, mes, ano;
public void CalculaIdade() {
this.setSize(170,90);
this.setLocationRelativeTo(null);
this.setLayout(null);
Date relogio = new Date();
SimpleDateFormat strFormat = new SimpleDateFormat("dd/MM/yyyy");
String data = strFormat.format(relogio);
String[] splitData = data.split("/");
dia = Integer.parseInt(splitData[0]);
mes = Integer.parseInt(splitData[1]);
ano = Integer.parseInt(splitData[2]);
textDia = new JTextField();
textMes = new JTextField();
textAno = new JTextField();
textDia.setBounds(0,0,50,25);
textMes.setBounds(50,0,50,25);
textAno.setBounds(100,0,50,25);
JButton btnCalculaIdade = new JButton("Calcular");
btnCalculaIdade.setBounds(0,25,150,25);
ActionListener action = new ActionListener() {
public void actionPerformed(ActionEvent e) {
int IntegerAno = Integer.parseInt(textAno.getText());
int idade = ano - IntegerAno;
if(Integer.parseInt(textDia.getText()) <= dia && Integer.parseInt(textMes.getText()) <= mes) {
JOptionPane.showMessageDialog(null, "Sua idade é: " + idade);
} else {
idade--;
JOptionPane.showMessageDialog(null, "Sua idade é: " + idade);
}
}
};
btnCalculaIdade.addActionListener(action);
this.add(textDia);
this.add(textMes);
this.add(textAno);
this.add(btnCalculaIdade);
this.setVisible(true);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
CalculaIdade ci = new CalculaIdade();
ci.CalculaIdade();
}
}
E se quiser setar a data no JLabel é só por label.setText(idade) dentro do action do botão