Olá, estou com um problema.
Tem o campo JTextField ano e um JLabel Idade, gostaria de quando eu colocasse outra data a JLabel idade atualiza-se automaticamente sem a necessidade de um botão.
Caso não tenha como fazer dessa forma e vocês tiverem alguma sugestão eu vou agradecer por de mais.
Você pode usar o focusLost do seu jTextField, dessa forma quando o campo perder o foco você executa a mesma ação que faz hoje quando clica no botão.
1 curtida
Olá, amigo, beleza?
Então, creio que você possa resolver isso adicionando implementando algum Listener no seu campo de texto. Recomendo o Focus Listener: basicamente ele pode executar seu código quando alguma alteração ocorrer no foco do componente (como quando o usuário começar a digitar dentro do seu campo). Aqui um pequeno exemplo:
JTextField txtAno = new JTextField();
JLabel lblIdade = new JLabel("Idade: ");
txtAno.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
super.focusGained(e);
System.out.println("O usuário está digitando o ano...");
}
@Override
public void focusLost(FocusEvent e) {
super.focusLost(e);
int calcIdade = (2020 - Integer.parseInt(txtAno.getText()));
lblIdade.setText("Idade: " + calcIdade);
System.out.println("O usuário acabou de digitar o ano");
}
});
Outra alternativa é implementar um Document Listener. Neste caso você consegue atualizar sua label até quando o usuário pressionar apenas uma tecla.
1 curtida
Consegui resolve com o que me ensinaram , vou deixar o código aqui para complementar.
Vcs São Show Cabeças. 


public JLabel Idade(int x,int y,int lx,int ly){
Calendar hoje = Calendar.getInstance();
JLabel l = new JLabel();
tf_nasciAno.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
super.focusGained(e);
}
@Override
public void focusLost(FocusEvent e) {
super.focusLost(e);
int dia = Integer.parseInt(tf_nasciDia.getText());
int mes = Integer.parseInt(tf_nasciMes.getText());
int ano = Integer.parseInt(tf_nasciAno.getText());
int anoHoje = hoje.get(Calendar.YEAR);
int mesHoje = hoje.get(Calendar.WEEK_OF_YEAR);
int diaHoje = hoje.get(Calendar.DAY_OF_YEAR);
int idade = 0;
if(mesHoje<mes){
idade = anoHoje - ano - 1;
}
if(mes==mesHoje){
if(diaHoje>=dia){
idade = anoHoje - ano;
} else{
idade = anoHoje - ano - 1;
}
} else {
idade = anoHoje - ano;
}
l.setText("Idade: " + idade);
}
});
l.setLayout(null);
l.setSize(x,y);
l.setLocation(lx,ly);
l.setOpaque(true);
l.setForeground(tema.getTextoTF2());
l.setBackground(tema.getFundoTF());
l.setBorder(
BorderFactory.createMatteBorder(0,10,0,0,tema.getFundoTF())
);
l.setFont(new Font("monofonto", Font.BOLD, 16));
l.setHorizontalAlignment(SwingConstants.LEFT);
return l;
}