目的是利用constrainted属性输入正确的年月日
可是我写的代码就是不对啊 希望大家帮帮忙看一下
告诉我那里不对啊 
文件1
import java.awt.*;
import javax.swing.*;
import java.beans.*;
import java.awt.event.*;
import java.io.Serializable;
public class text1 extends JPanel implements ActionListener
{
JLabel Year;
JLabel Month;
JLabel Day;
JLabel Display;
JButton bt1;
JButton bt2;
JButton bt3;

JTextField YearField;
JTextField MonthField;
JTextField DayField;

private int y;
private int m;
private int d;

GridLayout gl;
private VetoableChangeSupport change1 =new VetoableChangeSupport(this);
private VetoableChangeSupport change2 =new VetoableChangeSupport(this);
private VetoableChangeSupport change3 =new VetoableChangeSupport(this);

public  boolean YearCanUpdate=false;
public  boolean MonthCanUpdate=false;
public  boolean DayCanUpdate=false;

public text1()
{
Year=new JLabel("Year");
Month= new JLabel("Month");
Day= new JLabel("Day");
Display =new JLabel("");

YearField=new JTextField (2);
MonthField = new JTextField(2);
DayField =new JTextField(2);

bt1=new JButton("year ok");
bt2=new JButton ("month ok");
bt3=new JButton ("dat ok");

bt1.addActionListener(this);
bt2.addActionListener(this);
bt3.addActionListener(this);

gl=new GridLayout(4,3);

setLayout(gl);

add(Year);
add(YearField);
add(bt1);
add(Month);
add(MonthField);
add(bt2);
add(Day);
add(DayField);
add(bt3);
add(Display);
Display.setText(Integer.toString(y)+"/"+Integer.toString(m)+"/"+Integer.toString(d));


}
public int gety()
{
return y;
}
public int getm()
{
return m;
}
public int getd()
{
return d;
}

public void sety(int NewValue)
{
int OldValue;
OldValue=y;
try
{
change1.fireVetoableChange("a",OldValue,NewValue);
}
catch(Exception e )
{
System.out.println(e);
}
if(YearCanUpdate==true)
{
y=NewValue;
Display.setText(Integer.toString(y)+"/"+Integer.toString(m)+"/"+Integer.toString(d));
YearCanUpdate=false;
}
else
{
JOptionPane.showMessageDialog(null,"worry");

}

}
public void setm(int NewValue)
{
int OldValue;
OldValue=m;
try
{
change2.fireVetoableChange("b",OldValue,NewValue);
}
catch(Exception e)
{
System.out.println(e);
} if(MonthCanUpdate)
{
m=NewValue;
Display.setText(Integer.toString(y)+"/"+Integer.toString(m)+"/"+Integer.toString(d));
MonthCanUpdate=false;
}
else
{
JOptionPane.showMessageDialog(null,"worry");
}

public void setd(int NewValue)
{
int OldValue;
OldValue=d;

try
{
change3.fireVetoableChange("c",OldValue,NewValue);
}
catch(Exception e)
{
System.out.println(e);
}
if(DayCanUpdate==true)
{
d=NewValue;
Display.setText(Integer.toString(y)+"/"+Integer.toString(m)+"/"+Integer.toString(d));
DayCanUpdate=false;

}
else
{
JOptionPane.showMessageDialog(null,"worry");
}

}
public void actionPerformed(ActionEvent e)
{
Object evt=e.getSource();
if(evt==bt1)
{
sety(Integer.parseInt(YearField.getText()));
}
if(evt==bt2)
{
setm(Integer.parseInt(MonthField.getText()));
}
if(evt==bt3)
{
setd(Integer.parseInt(DayField.getText()));
}


}

public void addVetoableChangeListener1(VetoableChangeListener l)
{
change1.addVetoableChangeListener(l);
}
public void removeVetoableChangeListener1(VetoableChangeListener l)
{
change1.removeVetoableChangeListener(l);
}
public void addVetoableChangeListener2(VetoableChangeListener l)
{
change2.addVetoableChangeListener(l);
}
public void removeVetoableChangeListener2(VetoableChangeListener l)
{
change2.removeVetoableChangeListener(l);
}
public void addVetoableChangeListener3(VetoableChangeListener l)
{
change3.addVetoableChangeListener(l);
}
public void removeVetoableChangeListener3(VetoableChangeListener l)
{
change3.removeVetoableChangeListener(l);
}









文件2
import java.awt.*;
import java.beans.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;public class text2 implements VetoableChangeListener
{
text1 a;

public text2()
{
a=new text1();
a.addVetoableChangeListener1(this);
} public void vetoableChange(PropertyChangeEvent p)
{
String x=(String)p.getNewValue();
int y;
y=Integer.parseInt(x);
System.out.println(y);
if(y>0)
{
a.YearCanUpdate=true;
}
}
}
文件3
import java.awt.*;
import javax.swing.*;
import java.beans.*;
import java.awt.event.*;
import java.io.*;public class text3 implements VetoableChangeListener
{
text1 b;
public text3()
{
b=new text1();
b.addVetoableChangeListener2(this);
}
public void vetoableChange(PropertyChangeEvent p)
{
String x=(String)p.getNewValue();
int m;
m=Integer.parseInt(x);
if(m<=12&&m>0)
{
b.MonthCanUpdate=true;
}
}
}
文件4
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.awt.*;public class text4 implements VetoableChangeListener
{
text1 c;
int Month[]={31,28,31,30,31,30,31,31,30,31,30,31};

public text4()
{
c= new text1();
c.addVetoableChangeListener3(this);
}
public void vetoableChange(PropertyChangeEvent p)
{
String  x =(String)p.getNewValue();
int d;
d=Integer.parseInt(x);
int m=c.getm();
int y=c.gety();
if(d<Month[m])
{
c.DayCanUpdate=true;
}
if(d==29&&((y%400==0)||(y%4==0&&y%100!=0)))
{
c.DayCanUpdate=true;
}

}


}
文件5
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.beans.*;
import java.io.*;public class text extends JFrame implements VetoableChangeListener
{
text1 date;
public text()
{
super("datelogin");
date=new text1();
date.addVetoableChangeListener(this);

getContentPane().add(date);
setSize(10,5);
setVisible(true);
}
public void vetoableChange(PropertyChangeEvent p)
{
date.addVetoableChangeListener1(new text2());
date.addVetoableChangeListener2(new text3());
date.addVetoableChangeListener3(new text4());
}
public static void main(String a[])
{
new text();
}



}
谢谢大家帮我看一下啊