Duvida de GUI

2 respostas
albjava

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

2 Respostas

Ironlynx

Eu ficaria preocupado se mostrasse alguma coisa…
cara, seu contentPane(JPanel) está sem os componentes!
Aonde vc adiciona eles ao JPanel???

albjava

como faz isso?

Criado 8 de abril de 2006
Ultima resposta 8 de abr. de 2006
Respostas 2
Participantes 2