Estou com o seguinte codigo:
import javax.swing.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Idade extends JDialog {
private JPanel contentPane;
private JButton calcid;
private JButton limpacampos;
private JTextField datadehoje;
private JTextField dataniver;
private JTextField resultado;
private JTextField mm;
private JTextField aaaa;
public Idade() {
setContentPane(contentPane);
setModal(true);
getRootPane().setDefaultButton(calcid);
datadehoje.setText(new SimpleDateFormat( "dd/MM/yyyy" ).format( new Date()));
calcid.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
calculaIdade();
onOK();
}
});
limpacampos.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
onCancel();
}
});
// call onCancel() when cross is clicked
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// call onCancel() on ESCAPE
contentPane.registerKeyboardAction(new ActionListener() {
public void actionPerformed(ActionEvent e) {
onCancel();
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
}
public void calculaIdade(){
int data, mes,ano;
data = Integer.parseInt(dataniver.getText());
mes = Integer.parseInt(mm.getText());
ano = Integer.parseInt(aaaa.getText());
Calendar dateOfBirth = new GregorianCalendar(ano, mes, data);
Calendar today = Calendar.getInstance();
int age = today.get(Calendar.YEAR) - dateOfBirth.get(Calendar.YEAR);
dateOfBirth.add(Calendar.YEAR, age);
if (today.before(dateOfBirth)) {
age--;
}
resultado.setText(String.valueOf(age));
}
private void onOK() {
this.calculaIdade();
dispose();
}
private void onCancel() {
dataniver.setText("");
resultado.setText("");
mm.setText("");
aaaa.setText("");
dispose();
}
public static void main(String[] args) {
Idade dialog = new Idade();
dialog.pack();
dialog.show();
}
}
Só que em vez de dar o resultado ele fecha a janela direto.
Pq isso?
Valeu