|   Respuesta: Problema al validar fecha 
  soy nueva en java sin embargo me parece un gran lenguaje de programación con lo poco q sé!!! la pregunta de MikiBroki es un poco vieja sin embargo investigando en google como validar fechas me encontre con este foro y decidi registrarme para mostrar la solucion q encontre al trabajar con fechas y registrarlas... espero les sirva a muchos q se encuentren con este problemita:
 trabaje con una ventana llamada gaceta en donde tenía q registrar la fecha en la que fue aprobada para guardarla en la base de datos y me diseñe este codigo guiandome por el diseño con MVC(MODELO VISTA CONTROLADOR),sin embargo lo q les interesará es solo el controlador y la vista para que vean el funcionamiento de la validación de fechas usando JComboBox:
 Vista:
 package vista;
 
 import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.JDialog;
 import javax.swing.JLabel;
 import javax.swing.JTextField;
 import javax.swing.SwingConstants;
 
 import controlador.ControlGaceta;
 
 
 public class Gaceta extends JDialog{
 
 private static final long serialVersionUID = 1L;
 
 private JTextField txtTipoPago,txtBusq,txtNumGaceta;
 private JButton btnGuard,btnLimpiar;
 private JLabel lbl1,lbl2,lbl3;
 private JComboBox cbDia=null,cbMes=null,cbAño=null;
 
 public Gaceta(int x, int y){
 ControlGaceta controlador= new ControlGaceta(this);
 this.setLayout(null);
 
 // Label
 lbl1=new JLabel("Nº de Gaceta:");
 lbl1.setBounds(25,35,90,20);
 this.add(lbl1);
 
 lbl2=new JLabel("Fecha Aprob:");
 lbl2.setBounds(180,35,90,20);
 this.add(lbl2);
 
 lbl3=new JLabel("Registro");
 lbl3.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.  SoftBevelBorder.RAISED));
 lbl3.setHorizontalAlignment(SwingConstants.CENTER)  ;
 lbl3.setBounds(0,0,500,20);
 this.add(lbl3);
 
 
 //Jtexfields
 txtNumGaceta=new JTextField();
 txtNumGaceta.setBounds(105,35,40,20);
 this.add(txtNumGaceta);
 
 //JComboBox Fecha
 
 cbDia=new JComboBox();
 cbDia.addItem("Dia:");
 cbDia.setBounds(265,35,50,20);
 this.add(cbDia);
 controlador.llenaDia(31);
 cbDia.addActionListener(controlador);
 
 String[] meses = {"Mes:","Enero","Febrero","Marzo","Abril","Mayo  ",
 "Junio","Julio","Agosto","Septiembre","Octubre  ",
 "Noviembre","Diciemrbre"};
 
 cbMes=new JComboBox(meses);
 cbMes.setBounds(322,35,90,20);
 this.add(cbMes);
 cbMes.addActionListener(controlador);
 
 cbAño=new JComboBox();
 cbAño.addItem("Año:");
 cbAño.setBounds(420,35,60,20);
 this.add(cbAño);
 controlador.llenaAño();
 cbAño.addActionListener(controlador);
 
 //botones
 
 btnGuard= new JButton("Guardar");
 btnGuard.setBounds(120,90, 80, 20);
 btnGuard.addActionListener(controlador);
 this.add(btnGuard);
 
 btnLimpiar= new JButton("Limpiar");
 btnLimpiar.setBounds(230,90, 80, 20);
 btnLimpiar.addActionListener(controlador);
 this.add(btnLimpiar);
 
 this.setTitle("  Gaceta");
 this.setBounds(x/3,y/6,500,180);
 this.setResizable(false);
 this.setModal(true);
 this.setVisible(true);
 }
 
 public void Limpiar(){
 this.txtTipoPago.setText("");
 }
 
 public final JTextField getTxtTipoPago() {
 return txtTipoPago;
 }
 
 public final void setTxtTipoPago(JTextField txtTipoPago) {
 this.txtTipoPago = txtTipoPago;
 }
 
 public final JTextField getTxtBusq() {
 return txtBusq;
 }
 
 public final void setTxtBusq(JTextField txtBusq) {
 this.txtBusq = txtBusq;
 }
 
 public final JTextField getTxtNumGaceta() {
 return txtNumGaceta;
 }
 
 public final void setTxtNumGaceta(JTextField txtNumGaceta) {
 this.txtNumGaceta = txtNumGaceta;
 }
 
 public final JButton getBtnGuard() {
 return btnGuard;
 }
 
 public final JButton getBtnLimpiar() {
 return btnLimpiar;
 }
 
 
 public final JComboBox getDia() {
 return cbDia;
 }
 
 public final JComboBox getMes() {
 return cbMes;
 }
 
 public final JComboBox getAño() {
 return cbAño;
 }
 
 }
 
 Controlador: aqui manejamos el metodo que verifica si el año es bisiesto
 package controlador;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.Calendar;
 import vista.Gaceta;
 
 public class ControlGaceta implements ActionListener {
 
 Gaceta vista;
 
 public ControlGaceta(Gaceta vista){
 this.vista=vista;
 }
 
 public void actionPerformed(ActionEvent e) {
 if(e.getSource()==vista.getMes()||e.getSource()==v  ista.getAño()){
 String mes=vista.getMes().getSelectedItem().toString();
 if(mes.equals("Abril")||mes.equals("Junio")||mes.e  quals("Septiembre")||mes.equals("Noviembre"))
 this.llenaDia(30);
 else if(mes.equals("Enero")||mes.equals("Marzo")||mes.e  quals("Mayo")||mes.equals("Julio")||mes.equals("Ag  osto")||mes.equals("Octubre")||mes.equals("Diciemb  re"))
 this.llenaDia(31);
 else if(mes.equals("Febrero")){
 if(esBisiesto(Integer.valueOf(vista.getAño().getSe  lectedItem().toString())))
 this.llenaDia(29);
 else
 this.llenaDia(28);
 }
 }
 }
 public boolean esBisiesto(int anio)
 {
 return((anio%4==0 && anio%100 !=0)||(anio%400==0));
 }
 
 public void llenaAño(){
 Calendar cal= Calendar.getInstance();
 int i=0;
 for(i=1990;i<=cal.get(Calendar.YEAR);i++){
 vista.getAño().addItem(i);
 }
 vista.getAño().setSelectedItem(i-1);
 }
 
 public void llenaDia(int limite){
 for(int i=1;i<=limite;i++){
 vista.getDia().addItem(i);
 }
 }
 }
 
 //porfa comenten su opinion... o mejoras
     |