Õ¾ÄÚËÑË÷: ÇëÊäÈëËÑË÷¹Ø¼ü´Ê

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú JavaBeans³ÌÐò¿ª·¢´ÓÈëÃŵ½¾«Í¨

JavaBeans³ÌÐò¿ª·¢´ÓÈëÃŵ½¾«Í¨

ÕªÒª: JavaBeansµÄÊôÐÔÓëÒ»°ãJava³ÌÐòÖÐËùÖ¸µÄÊôÐÔ£¬»òÕß˵ÓëËùÓÐÃæÏò¶ÔÏóµÄ³ÌÐòÉè¼ÆÓïÑÔÖжÔÏóµÄÊôÐÔÊÇÒ»¸ö¸ÅÄî
¡¡¡¡JavaBeansµÄÊôÐÔ

¡¡¡¡JavaBeansµÄÊôÐÔÓëÒ»°ãJava³ÌÐòÖÐËùÖ¸µÄÊôÐÔ£¬»òÕß˵ÓëËùÓÐÃæÏò¶ÔÏóµÄ³ÌÐòÉè¼ÆÓïÑÔÖжÔÏóµÄÊôÐÔÊÇÒ»¸ö¸ÅÄÔÚ³ÌÐòÖеľßÌåÌåÏÖ¾ÍÊÇÀàÖеıäÁ¿¡£ÔÚJavaBeansÉè¼ÆÖУ¬°´ÕÕÊôÐԵIJ»Í¬×÷ÓÃÓÖϸ·ÖΪËÄÀࣺSimple, Index, BoundÓëConstrainedÊôÐÔ¡£

¡¡¡¡1. SimpleÊôÐÔ

¡¡¡¡Ò»¸ö¼òµ¥ÊôÐÔ±íʾһ¸ö°éËæÓÐÒ»¶Ôget/set·½·¨£¨CÓïÑԵĹý³Ì»òº¯ÊýÔÚJava³ÌÐòÖгÆΪ"·½·¨"£©µÄ±äÁ¿¡£ÊôÐÔÃûÓëºÍ¸ÃÊôÐÔÏà¹ØµÄget/set·½·¨Ãû¶ÔÓ¦¡£ÀýÈ磺Èç¹ûÓÐsetXºÍgetX·½·¨£¬Ôò°µÖ¸ÓÐÒ»¸öÃûΪ"X"µÄÊôÐÔ¡£Èç¹ûÓÐÒ»¸ö·½·¨ÃûΪisX£¬Ôòͨ³£°µÖ¸"X"ÊÇÒ»¸ö²¼¶ûÊôÐÔ£¨¼´XµÄֵΪtrue»òfalse£©¡£ÀýÈçÔÚÏÂÃæÕâ¸ö³ÌÐòÖУº

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>public class alden1 extends Canvas {
¡¡string ourString= "Hello"; //ÊôÐÔÃûΪourString£¬ÀàÐÍΪ×Ö·û´®
¡¡public alden1(){ ¡¡¡¡¡¡¡¡//alden1()ÊÇalden1µÄ¹¹Ô캯Êý£¬
¡¡¡¡ÓëC++Öй¹Ô캯ÊýµÄÒâÒåÏàͬ
¡¡¡¡setBackground(Color.red);
¡¡¡¡setForeground(Color.blue);
¡¡}
¡¡/* "set"ÊôÐÔ*/
¡¡public void setString(String newString) {
¡¡¡¡ourString=newString;
¡¡}
¡¡/* "get"ÊôÐÔ */
¡¡public String getString() {
¡¡¡¡return ourString;
¡¡}
} </td></tr></table>
¡¡¡¡ 2. IndexedÊôÐÔ

¡¡¡¡Ò»¸öIndexedÊôÐÔ±íʾһ¸öÊý×éÖµ¡£Ê¹ÓÃÓë¸ÃÊôÐÔ¶ÔÓ¦µÄset/get·½·¨¿ÉÈ¡µÃÊý×éÖеÄÊýÖµ¡£¸ÃÊôÐÔÒ²¿ÉÒ»´ÎÉèÖûòÈ¡µÃÕû¸öÊý×éµÄÖµ¡£Àý£º

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>public class alden2 extends Canvas {
¡¡int[] dataSet={1,2,3,4,5,6}; // dataSetÊÇÒ»¸öindexedÊôÐÔ
¡¡public alden2() {
¡¡¡¡setBackground(Color.red);
¡¡¡¡setForeground(Color.blue);
¡¡}
¡¡/* ÉèÖÃÕû¸öÊý×é¡¡*/
¡¡public void setDataSet(int[] x){
¡¡¡¡dataSet=x;
¡¡}
¡¡/* ÉèÖÃÊý×éÖеĵ¥¸öÔªËØÖµ */
¡¡public void setDataSet(int index, int x){
¡¡¡¡dataSet[index]=x;
¡¡}
¡¡/* È¡µÃÕû¸öÊý×éÖµ */
¡¡public int[] getDataSet(){
¡¡¡¡return dataSet;
¡¡}
¡¡/* È¡µÃÊý×éÖеÄÖ¸¶¨ÔªËØÖµ */
¡¡public int getDataSet(int x){
¡¡¡¡return dataSet[x];
¡¡}
} </td></tr></table>
¡¡¡¡3. BoundÊôÐÔ

¡¡¡¡Ò»¸öBoundÊôÐÔÊÇÖ¸µ±¸ÃÖÖÊôÐÔµÄÖµ·¢Éú±ä»¯Ê±£¬ÒªÍ¨ÖªÆäËüµÄ¶ÔÏó¡£Ã¿´ÎÊôÐÔÖµ¸Ä±äʱ£¬ÕâÖÖÊôÐԾ͵ã»ðÒ»¸öPropertyChangeʼþ(ÔÚJava³ÌÐòÖУ¬Ê¼þÒ²ÊÇÒ»¸ö¶ÔÏó)¡£Ê¼þÖзâ×°ÁËÊôÐÔÃû¡¢ÊôÐÔµÄÔ­Öµ¡¢ÊôÐԱ仯ºóµÄÐÂÖµ¡£ÕâÖÖʼþÊÇ´«µÝµ½ÆäËüµÄBeans£¬ÖÁÓÚ½ÓÊÕʼþµÄBeansÓ¦×öʲô¶¯×÷ÓÉÆä×Ô¼º¶¨Òå¡£µ±PushButtonµÄbackgroundÊôÐÔÓëDialogµÄbackgroundÊôÐÔbindʱ£¬ÈôPushButtonµÄbackgroundÊôÐÔ·¢Éú±ä»¯Ê±£¬DialogµÄbackgroundÊôÐÔÒ²·¢ÉúͬÑùµÄ±ä»¯¡£ Àý£º

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>public class alden3 extends Canvas{
¡¡String ourString= "Hello";
¡¡//ourStringÊÇÒ»¸öboundÊôÐÔ
¡¡private PropertyChangeSupport changes = new PropertyChangeSupport(this);
¡¡/** ×¢£ºJavaÊÇ´¿ÃæÏò¶ÔÏóµÄÓïÑÔ£¬
¡¡Èç¹ûҪʹÓÃijÖÖ·½·¨Ôò±ØÐëÖ¸Ã÷ÊÇҪʹÓÃÄĸö¶ÔÏóµÄ·½·¨£¬
¡¡ÔÚÏÂÃæµÄ³ÌÐòÖÐÒª½øÐеã»ðʼþµÄ²Ù×÷£¬
¡¡ÕâÖÖ²Ù×÷ËùʹÓõķ½·¨ÊÇÔÚPropertyChangeSupportÀàÖеġ£
¡¡ËùÒÔÉÏÃæÉùÃ÷²¢ÊµÀý»¯ÁËÒ»¸öchanges¶ÔÏó£¬
¡¡ÔÚÏÂÃ潫ʹÓÃchangesµÄfirePropertyChange·½·¨À´µã»ðourStringµÄÊôÐԸıäʼþ¡£*/

¡¡public void setString(string newString){
¡¡¡¡String oldString = ourString;
¡¡¡¡ourString = newString;
¡¡¡¡/* ourStringµÄÊôÐÔÖµÒÑ·¢Éú±ä»¯£¬ÓÚÊǽÓ×ŵã»ðÊôÐԸıäʼþ */
¡¡¡¡changes.firePropertyChange("ourString",oldString,newString);
¡¡}
¡¡public String getString(){
¡¡¡¡return ourString;
¡¡}
¡¡/** ÒÔÏ´úÂëÊÇΪ¿ª·¢¹¤¾ßËùʹÓõġ£
¡¡ÎÒÃDz»ÄÜÔ¤Öªalden3½«ÓëÄÄЩÆäËüµÄBeans×éºÏ³ÉΪһ¸öÓ¦Óã¬
¡¡ÎÞ·¨Ô¤ÖªÈôalden3µÄourStringÊôÐÔ·¢Éú±ä»¯Ê±ÓÐÄÄЩÆäËüµÄ×é¼þÓë´Ë±ä»¯Óйأ¬
¡¡Òò¶øalden3Õâ¸öBeansÒªÔ¤Áô³öһЩ½Ó¿Ú¸ø¿ª·¢¹¤¾ß£¬
¡¡¿ª·¢¹¤¾ßʹÓÃÕâЩ½Ó¿Ú£¬
¡¡°ÑÆäËüµÄJavaBeans¶ÔÏóÓëalden3¹Ò½Ó¡£*/

¡¡public void addPropertyChangeListener(PropertyChangeLisener l){
¡¡¡¡changes.addPropertyChangeListener(l);
¡¡}
¡¡public void removePropertyChangeListener(PropertyChangeListener l){
¡¡¡¡changes.removePropertyChangeListener(l);
¡¡}</td></tr></table>
¡¡¡¡Í¨¹ýÉÏÃæµÄ´úÂ룬¿ª·¢¹¤¾ßµ÷ÓÃchangesµÄaddPropertyChangeListener·½·¨£¬°ÑÆäËüJavaBeans×¢²áÈëourStringÊôÐԵļàÌýÕ߶ÓÁÐlÖУ¬lÊÇÒ»¸öVectorÊý×飬¿É´æ´¢ÈκÎJava¶ÔÏó¡£

¡¡¡¡¿ª·¢¹¤¾ßÒ²¿ÉʹÓÃchangesµÄremovePropertyChangeListener·½·¨£¬´ÓlÖÐ×¢ÏúÖ¸¶¨µÄ¶ÔÏó£¬Ê¹alden3µÄourStringÊôÐԵĸı䲻ÔÙÓëÕâ¸ö¶ÔÏóÓйء£

¡¡¡¡µ±È»£¬µ±³ÌÐòÔ±ÊÖд´úÂë±àÖƳÌÐòʱ£¬Ò²¿ÉÖ±½Óµ÷ÓÃÕâÁ½¸ö·½·¨£¬°ÑÆäËüJava¶ÔÏóÓëalden3¹Ò½Ó¡£
¡¡¡¡4. ConstrainedÊôÐÔ

¡¡¡¡Ò»¸öJavaBeansµÄconstrainedÊôÐÔ£¬ÊÇÖ¸µ±Õâ¸öÊôÐÔµÄÖµÒª·¢Éú±ä»¯Ê±£¬ÓëÕâ¸öÊôÐÔÒѽ¨Á¢ÁËijÖÖÁ¬½ÓµÄÆäËüJava¶ÔÏó¿É·ñ¾öÊôÐÔÖµµÄ¸Ä±ä¡£constrainedÊôÐԵļàÌýÕßͨ¹ýÅ׳öPropert yVetoExceptionÀ´×èÖ¹¸ÃÊôÐÔÖµµÄ¸Ä±ä¡£Àý£ºÏÂÃæ³ÌÐòÖеÄconstrainedÊôÐÔÊÇPriceInCents¡£

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>public class JellyBeans extends Canvas{
¡¡private PropertyChangeSupport changes=new PropertyChangeSupport(this);
¡¡private VetoableChangeSupport Vetos=new VetoableChangeSupport(this);
¡¡/*ÓëÇ°ÊöchangesÏàͬ£¬
¡¡¿ÉʹÓÃVetoableChangeSupport¶ÔÏóµÄʵÀýVetosÖеķ½·¨£¬
¡¡ÔÚÌض¨Ìõ¼þÏÂÀ´×èÖ¹PriceInCentsÖµµÄ¸Ä±ä¡£*/

¡¡......
¡¡public void setPriceInCents(int newPriceInCents) throws PropertyVetoException {
¡¡¡¡/*·½·¨ÃûÖÐthrows PropertyVetoExceptionµÄ×÷ÓÃÊǵ±ÓÐ
¡¡¡¡ÆäËüJava¶ÔÏó·ñ¾öPriceInCentsµÄ¸Ä±äʱ£¬
¡¡¡¡ÒªÅ׳öÀýÍâ¡£*/
¡¡¡¡/* Ïȱ£´æÔ­À´µÄÊôÐÔÖµ*/

¡¡¡¡int oldPriceInCents=ourPriceInCents;
¡¡¡¡/**µã»ðÊôÐԸıä·ñ¾öʼþ*/
¡¡¡¡vetos.fireVetoableChange("priceInCents",new Integer(OldPriceInCents),new Integer(newPriceInCents));

¡¡¡¡/**ÈôÓÐÆäËü¶ÔÏó·ñ¾öpriceInCentsµÄ¸Ä±ä£¬
¡¡¡¡Ôò³ÌÐòÅ׳öÀýÍ⣬²»ÔÙ¼ÌÐøÖ´ÐÐÏÂÃæµÄÁ½ÌõÓï¾ä£¬
¡¡¡¡·½·¨½áÊø¡£ÈôÎÞÆäËü¶ÔÏó·ñ¾öpriceInCentsµÄ¸Ä±ä£¬
¡¡¡¡ÔòÔÚÏÂÃæµÄ´úÂëÖаÑourPriceIncents¸³ÓèÐÂÖµ£¬
¡¡¡¡²¢µã»ðÊôÐԸıäʼþ*/

¡¡¡¡ourPriceInCents=newPriceInCents;
¡¡¡¡changes.firePropertyChange("priceInCents", new Integer(oldPriceInCents), new Integer(newPriceInCents));
¡¡}

¡¡/**ÓëÇ°ÊöchangesÏàͬ£¬
¡¡Ò²ÒªÎªPriceInCentsÊôÐÔÔ¤Áô½Ó¿Ú£¬
¡¡Ê¹ÆäËü¶ÔÏó¿É×¢²áÈëPriceInCents·ñ¾ö¸Ä±ä¼àÌýÕ߶ÓÁÐÖУ¬
¡¡»ò°Ñ¸Ã¶ÔÏó´ÓÖÐ×¢Ïú

¡¡public void addVetoableChangeListener(VetoableChangeListener l)
¡¡{
¡¡¡¡vetos.addVetoableChangeListener(l);
¡¡}
¡¡public void removeVetoableChangeListener(VetoableChangeListener l){
¡¡¡¡vetos.removeVetoableChangeListener(l);
¡¡}
¡¡......
} </td></tr></table>
¡¡¡¡´ÓÉÏÃæµÄÀý×ÓÖпɿ´µ½£¬Ò»¸öconstrainedÊôÐÔÓÐÁ½ÖÖ¼àÌýÕߣºÊôÐԱ仯¼àÌýÕߺͷñ¾öÊôÐԸıäµÄ¼àÌýÕß¡£·ñ¾öÊôÐԸıäµÄ¼àÌýÕßÔÚ×Ô¼ºµÄ¶ÔÏó´úÂëÖÐÓÐÏàÓ¦µÄ¿ØÖÆÓï¾ä£¬ÔÚ¼àÌýµ½ÓÐconstrainedÊôÐÔÒª·¢Éú±ä»¯Ê±£¬ÔÚ¿ØÖÆÓï¾äÖÐÅжÏÊÇ·ñÓ¦·ñ¾öÕâ¸öÊôÐÔÖµµÄ¸Ä±ä¡£

¡¡¡¡×ÜÖ®£¬Ä³¸öBeansµÄconstrainedÊôÐÔÖµ¿É·ñ¸Ä±äÈ¡¾öÓÚÆäËüµÄBeans»òÕßÊÇJava¶ÔÏóÊÇ·ñÔÊÐíÕâÖָı䡣ÔÊÐíÓë·ñµÄÌõ¼þÓÉÆäËüµÄBeans»òJava¶ÔÏóÔÚ×Ô¼ºµÄÀàÖ Ð½øÐж¨Òå¡£

¡¡¡¡JavaBeansµÄʼþ

¡¡¡¡Ê¼þ´¦ÀíÊÇJavaBeansÌåϵ½á¹¹µÄºËÐÄÖ®Ò»¡£Í¨¹ýʼþ´¦Àí»úÖÆ£¬¿ÉÈÃһЩ×é¼þ×÷ΪʼþÔ´£¬·¢³ö¿É±»ÃèÊö»·¾³»òÆäËü×é¼þ½ÓÊÕµÄʼþ¡£ÕâÑù£¬²»Í¬µÄ×é¼þ¾Í¿ÉÔÚ¹¹Ô칤¾ßÄÚ×éºÏÔÚÒ»Æð£¬×é¼þÖ®¼äͨ¹ýʼþµÄ´«µÝ½øÐÐͨÐÅ£¬¹¹³ÉÒ»¸öÓ¦ÓᣴӸÅÄîÉϽ²£¬Ê¼þÊÇÒ»ÖÖÔÚ"Ô´¶ÔÏó"ºÍ"¼àÌýÕ߶ÔÏó"Ö®¼ä£¬Ä³ÖÖ״̬·¢Éú±ä»¯µÄ´«µÝ»úÖÆ¡£Ê¼þÓÐÐí¶à²»Í¬µÄÓÃ;£¬ÀýÈçÔÚWindowsϵͳÖг£Òª´¦ÀíµÄÊó±êʼþ¡¢´°¿Ú±ß½ç¸Ä±äʼþ¡¢¼üÅÌʼþµÈ¡£ÔÚJavaºÍJavaBeansÖÐÔòÊǶ¨ÒåÁËÒ»¸öÒ»°ãµÄ¡¢¿ÉÀ©³äµÄʼþ»úÖÆ£¬ÕâÖÖ»úÖÆÄܹ»£º

¡¡¡¡¡¤¶ÔʼþÀàÐͺʹ«µÝµÄÄ£Ð͵Ķ¨ÒåºÍÀ©³äÌṩһ¸ö¹«¹²¿ò¼Ü£¬²¢ÊʺÏÓڹ㷺µÄÓ¦Óá£

¡¡¡¡¡¤ÓëJavaÓïÑԺͻ·¾³Óнϸߵļ¯³É¶È¡£

¡¡¡¡¡¤Ê¼þÄܱ»ÃèÊö»·¾³²¶»ñºÍµã»ð¡£

¡¡¡¡¡¤ÄÜʹÆäËü¹¹Ô칤¾ß²ÉȡijÖÖ¼¼ÊõÔÚÉè¼Æʱֱ½Ó¿ØÖÆʼþ£¬ÒÔ¼°Ê¼þÔ´ºÍʼþ¼àÌýÕßÖ®¼äµÄÁªÏµ¡£

¡¡¡¡¡¤Ê¼þ»úÖƱ¾Éí²»ÒÀÀµÓÚ¸´ÔӵĿª·¢¹¤¾ß¡£ÌرðµØ£¬»¹Ó¦µ±£º

¡¡¡¡¡¤Äܹ»·¢ÏÖÖ¸¶¨µÄ¶ÔÏóÀà¿ÉÒÔÉú³ÉµÄʼþ¡£

¡¡¡¡¡¤Äܹ»·¢ÏÖÖ¸¶¨µÄ¶ÔÏóÀà¿ÉÒԹ۲죨¼àÌý£©µ½µÄʼþ¡£

¡¡¡¡¡¤Ìṩһ¸ö³£¹æµÄ×¢²á»úÖÆ£¬ÔÊÐí¶¯Ì¬²Ù×ÝʼþÔ´Óëʼþ¼àÌýÕßÖ®¼äµÄ¹Øϵ¡£

¡¡¡¡¡¤²»ÐèÒªÆäËüµÄÐéÄâ»úºÍÓïÑÔ¼´¿ÉʵÏÖ¡£

¡¡¡¡¡¤Ê¼þÔ´Óë¼àÌýÕßÖ®¼ä¿É½øÐиßЧµÄʼþ´«µÝ¡£

¡¡¡¡¡¤ÄÜÍê³ÉJavaBeansʼþÄ£ÐÍÓëÏà¹ØµÄÆäËü×é¼þÌåϵ½á¹¹Ê¼þÄ£Ð͵ÄÖÐÁ¢Ó³Éä¡£

¡¡¡¡JavaBeansʼþÄ£Ð͵ÄÖ÷Òª¹¹³ÉÓУº ʼþ´ÓʼþÔ´µ½¼àÌýÕߵĴ«µÝÊÇͨ¹ý¶ÔÄ¿±ê¼àÌýÕ߶ÔÏóµÄJava·½·¨µ÷ÓýøÐеġ£¶Ôÿ¸öÃ÷È·µÄʼþµÄ·¢Éú£¬¶¼ÏàÓ¦µØ¶¨ÒåÒ»¸öÃ÷È·µÄJava·½·¨¡£ÕâЩ·½·¨¶¼¼¯Öж¨ÒåÔÚʼþ¼àÌýÕߣ¨EventListener£©½Ó¿ÚÖУ¬Õâ¸ö½Ó¿ÚÒª¼Ì³Ðjava.util.EventListener¡£ÊµÏÖÁËʼþ¼àÌýÕß½Ó¿ÚÖÐһЩ»òÈ«²¿·½·¨µÄÀà¾ÍÊÇʼþ¼àÌýÕß¡£ °éËæ×ÅʼþµÄ·¢Éú£¬ÏàÓ¦µÄ״̬ͨ³£¶¼·â×°ÔÚʼþ״̬¶ÔÏóÖУ¬¸Ã¶ÔÏó±ØÐë¼Ì³Ð×Ôjava.util.EventObject¡£Ê¼þ״̬¶ÔÏó×÷Ϊµ¥²Î´«µÝ¸øÓ¦ÏìÓ¦¸ÃʼþµÄ¼àÌýÕß·½·¨ÖС£ ·¢³öijÖÖÌض¨Ê¼þµÄʼþÔ´µÄ±êʶÊÇ£º×ñ´Ó¹æ¶¨µÄÉè¼Æ¸ñʽΪʼþ¼àÌýÕ߶¨Òå×¢²á·½·¨£¬²¢½ÓÊܶÔÖ¸¶¨Ê¼þ¼àÌýÕß½Ó¿ÚʵÀýµÄÒýÓᣠÓÐʱ£¬Ê¼þ¼àÌýÕß²»ÄÜÖ±½ÓʵÏÖʼþ¼àÌýÕß½Ó¿Ú£¬»òÕß»¹ÓÐÆäËüµÄ¶îÍ⶯×÷ʱ£¬¾ÍÒªÔÚÒ»¸öÔ´ÓëÆäËüÒ»¸ö»ò¶à¸ö¼àÌýÕßÖ®¼ä²åÈëÒ»¸öʼþÊÊÅäÆ÷ÀàµÄʵÀý£¬À´½¨Á¢ËüÃÇÖ®¼äµÄÁªÏµ¡£




¡ü·µ»ØĿ¼
ǰһƪ: ´óµÀÖÁ¼ò Java 23ÖÖģʽһµã¾Íͨ
ºóһƪ: ʹÓÃSWT¿ª·¢»ùÓÚJavaµÄͼÐÎÓû§½çÃæ