ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ106²¿·Ö
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡
¡¡£¨²»ÏñBadTechnuque¡£java¡¡ÄÇÑùÎÒÃÇÄÜʱʱ¿Ì¿Ì¿´µ½£©¡£¡¡¡¡
ÊÔÑéÕâ¸ö³ÌÐòÊÇÊ®·ÖµÄÓнÌÓýÒâÒåµÄ£¬ÒòΪÎÒÃÇѧϰÁËÐí¶àµÄ¹ØÓÚÔÚJava¡¡ÖÐʼþ·¢ÉúµÄ·½·¨¡£Ò»ÔòËüչʾÁË¡¡
´ó¶àÊý¿ª´°¿ÚµÄϵͳÖÐÉè¼ÆÉϵÄ覴ãºËüÏ൱µÄÄÑÒÔÈ¥µ¥»÷ºÍÊÍ·ÅÊó±ê£¬³ý·ÇÒƶ¯Ëü£¬²¢ÇÒµ±ÎÒÃÇʵ¼ÊÉÏÕý¡¡
ÊÔͼÓÃÊó±êµ¥»÷ÔÚijÎïÌåÉÏʱ¿ª´°¿ÚµÄ»á³£³£ÈÏΪÎÒÃÇÊÇÔÚÍ϶¯¡£Ò»¸ö½â¾öÕâ¸öÎÊÌâµÄ·½°¸ÊÇʹÓá¡
mousePressed£¨£©¡¡Êó±ê°´Ï·½·¨ºÍmouseReleased£¨£©Êó±êÊÍ·Å·½·¨È¥´úÌæmouseClicked£¨£©¡¡Êó±êµ¥»÷·½·¨£¬È»ºó¡¡
ÅжÏÊÇ·ñÈ¥µ÷ÓÃÎÒÃÇ×Ô¼ºµÄÒÔʱ¼äºÍ4¡¡¸öÏñËصÄÊó±êÖͺó×÷Óõġ°mouseReallyClicked£¨£©ÕæʵµÄÊó±êµ¥»÷¡±¡¡
·½·¨¡£¡¡¡¡
¡¡¡¡
5¡£¡¡õ¿½ÅµÄ×é¼þ¼Ì³Ð¡¡¡¡
ÁíÒ»ÖÖ×ö·¨Êǵ÷Óá¡enableEvent£¨£©·½·¨£¬²¢½«ÓëÏ£Íû¿ØÖƵÄʼþ¶ÔÓ¦µÄÄ£ÐÍ´«µÝ¸øËü£¨Ðí¶à²Î¿¼ÊéÖж¼ÔøÌá¡¡
¼°ÕâÖÖ×ö·¨£©¡£ÕâÑù×ö»áÔì³ÉÄÇЩʼþ±»·¢ËÍÖÁÀÏʽ·½·¨£¨¾¡¹ÜËüÃǶÔJava¡¡1¡£1¡¡À´ËµÊÇеģ©£¬²¢²ÉÓÃÏó¡¡
processFocusEvent£¨£©ÕâÑùµÄÃû×Ö¡£Ò²±ØÐëÒª¼Çסµ÷Óûù´¡Àà°æ±¾¡£ÏÂÃæÊÇËü¿´ÆðÀ´µÄÑù×Ó¡£¡¡¡¡
¡¡¡¡
//£º¡¡BadTechnique¡£java¡¡¡¡
//¡¡It's¡¡possible¡¡to¡¡override¡¡ponents¡¡this¡¡way£»¡¡¡¡
//¡¡but¡¡the¡¡listener¡¡approach¡¡is¡¡much¡¡better£»¡¡so¡¡¡¡
//¡¡why¡¡would¡¡you£¿¡¡¡¡
import¡¡java¡£awt¡£*£»¡¡¡¡
import¡¡java¡£awt¡£event¡£*£»¡¡¡¡
¡¡¡¡
class¡¡Display¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡final¡¡int¡¡¡¡
¡¡¡¡¡¡¡¡EVENT¡¡=¡¡0£»¡¡PONENT¡¡=¡¡1£»¡¡¡¡
¡¡¡¡¡¡¡¡MOUSE¡¡=¡¡2£»¡¡MOUSE_MOVE¡¡=¡¡3£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡443¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡445¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡FOCUS¡¡=¡¡4£»¡¡KEY¡¡=¡¡5£»¡¡ACTION¡¡=¡¡6£»¡¡¡¡
¡¡¡¡¡¡¡¡LAST¡¡=¡¡7£»¡¡¡¡
¡¡¡¡public¡¡String£§£§¡¡evnt£»¡¡¡¡
¡¡¡¡Display£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡evnt¡¡=¡¡new¡¡String£§LAST£§£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡LAST£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡evnt£§i£§¡¡=¡¡new¡¡String£¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡show£¨Graphics¡¡g£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡LAST£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡g¡£drawString£¨evnt£§i£§£»¡¡0£»¡¡10¡¡*¡¡i¡¡£«¡¡10£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡EnabledPanel¡¡extends¡¡Panel¡¡£û¡¡¡¡
¡¡¡¡Color¡¡c£»¡¡¡¡
¡¡¡¡int¡¡id£»¡¡¡¡
¡¡¡¡Display¡¡display¡¡=¡¡new¡¡Display£¨£©£»¡¡¡¡
¡¡¡¡public¡¡EnabledPanel£¨int¡¡i£»¡¡Color¡¡mc£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡id¡¡=¡¡i£»¡¡¡¡
¡¡¡¡¡¡¡¡c¡¡=¡¡mc£»¡¡¡¡
¡¡¡¡¡¡¡¡setLayout£¨new¡¡BorderLayout£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡add£¨new¡¡MyButton£¨£©£»¡¡BorderLayout¡£SOUTH£©£»¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡Type¡¡checking¡¡is¡¡lost¡£¡¡You¡¡can¡¡enable¡¡and¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡process¡¡events¡¡that¡¡the¡¡ponent¡¡doesn't¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡capture£º¡¡¡¡
¡¡¡¡¡¡¡¡enableEvents£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Panel¡¡doesn't¡¡handle¡¡these£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡AWTEvent¡£ACTION_EVENT_MASK¡¡£ü¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡AWTEvent¡£ADJUSTMENT_EVENT_MASK¡¡£ü¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡AWTEvent¡£ITEM_EVENT_MASK¡¡£ü¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡AWTEvent¡£TEXT_EVENT_MASK¡¡£ü¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡AWTEvent¡£WINDOW_EVENT_MASK¡¡£ü¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Panel¡¡can¡¡handle¡¡these£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡AWTEvent¡£PONENT_EVENT_MASK¡¡£ü¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡AWTEvent¡£FOCUS_EVENT_MASK¡¡£ü¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡AWTEvent¡£KEY_EVENT_MASK¡¡£ü¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡AWTEvent¡£MOUSE_EVENT_MASK¡¡£ü¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡AWTEvent¡£MOUSE_MOTION_EVENT_MASK¡¡£ü¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡AWTEvent¡£CONTAINER_EVENT_MASK£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡You¡¡can¡¡enable¡¡an¡¡event¡¡without¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡overriding¡¡its¡¡process¡¡method¡£¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡//¡¡To¡¡eliminate¡¡flicker£º¡¡¡¡
¡¡¡¡public¡¡void¡¡update£¨Graphics¡¡g£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡paint£¨g£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡paint£¨Graphics¡¡¡¡g£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡g¡£setColor£¨c£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Dimension¡¡s¡¡=¡¡getSize£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡g¡£fillRect£¨0£»¡¡0£»¡¡s¡£width£»¡¡s¡£height£©£»¡¡¡¡
¡¡¡¡¡¡¡¡g¡£setColor£¨Color¡£black£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡444¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡446¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡display¡£show£¨g£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡processEvent£¨AWTEvent¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£EVENT£§=¡¡e¡£toString£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡repaint£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡super¡£processEvent£¨e£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡¡¡
¡¡¡¡processponentEvent£¨ponentEvent¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡switch£¨e¡£getID£¨£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡ponentEvent¡£PONENT_MOVED£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£PONENT£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨ponent¡¡moved¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡ponentEvent¡£PONENT_RESIZED£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£PONENT£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨ponent¡¡resized¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡ponentEvent¡£PONENT_HIDDEN£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£PONENT£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨ponent¡¡hidden¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡ponentEvent¡£PONENT_SHOWN£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£PONENT£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨ponent¡¡shown¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡default£º¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡repaint£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡Must¡¡always¡¡remember¡¡to¡¡call¡¡the¡¡¡¨super¡¨¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡version¡¡of¡¡whatever¡¡you¡¡override£º¡¡¡¡
¡¡¡¡¡¡¡¡super¡£processponentEvent£¨e£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡processFocusEvent£¨FocusEvent¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡switch£¨e¡£getID£¨£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡FocusEvent¡£FOCUS_GAINED£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£FOCUS£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨FOCUS¡¡gained¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡FocusEvent¡£FOCUS_LOST£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£FOCUS£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨FOCUS¡¡lost¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡default£º¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡repaint£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡super¡£processFocusEvent£¨e£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡processKeyEvent£¨KeyEvent¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡switch£¨e¡£getID£¨£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡KeyEvent¡£KEY_PRESSED£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£KEY£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡445¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡447¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨KEY¡¡pressed£º¡¡¡¨£»¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡KeyEvent¡£KEY_RELEASED£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£KEY£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨KEY¡¡released£º¡¡¡¨£»¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡KeyEvent¡£KEY_TYPED£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£KEY£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨KEY¡¡typed£º¡¡¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡default£º¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡int¡¡code¡¡=¡¡e¡£getKeyCode£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£KEY£§¡¡£«=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡KeyEvent¡£getKeyText£¨code£©£»¡¡¡¡
¡¡¡¡¡¡¡¡repaint£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡super¡£processKeyEvent£¨e£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡processMouseEvent£¨MouseEvent¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡switch£¨e¡£getID£¨£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡MouseEvent¡£MOUSE_CLICKED£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡requestFocus£¨£©£»¡¡//¡¡Get¡¡FOCUS¡¡on¡¡click¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£MOUSE£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨MOUSE¡¡clicked¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡MouseEvent¡£MOUSE_PRESSED£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£MOUSE£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨MOUSE¡¡pressed¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡MouseEvent¡£MOUSE_RELEASED£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£MOUSE£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨MOUSE¡¡released¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡MouseEvent¡£MOUSE_ENTERED£º¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£MOUSE£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨MOUSE¡¡entered¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡MouseEvent¡£MOUSE_EXITED£º¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£MOUSE£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨MOUSE¡¡exited¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡default£º¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£MOUSE£§¡¡£«=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨£»¡¡x¡¡=¡¡¡¨¡¡£«¡¡e¡£getX£¨£©¡¡£«¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨£»¡¡y¡¡=¡¡¡¨¡¡£«¡¡e¡£getY¡¡£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡repaint£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡super¡£processMouseEvent£¨e£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡¡¡
¡¡¡¡processMouseMotionEvent£¨MouseEvent¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡switch£¨e¡£getID£¨£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡446¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡448¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡MouseEvent¡£MOUSE_DRAGGED£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£MOUSE_MOVE£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨MOUSE¡¡dragged¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break¡¡£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡case¡¡MouseEvent¡£MOUSE_MOVED£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£MOUSE_MOVE£§¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨MOUSE¡¡moved¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡default£º¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡display¡£evnt£§Display¡£MOUSE_MOVE£§¡¡£«=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨£»¡¡x¡¡=¡¡¡¨¡¡£«¡¡e¡£getX£¨£©¡¡£«¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨£»¡¡y¡¡=¡¡¡¨¡¡£«¡¡e¡£getY£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡repaint£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡super¡£processMouseMotionEvent£¨e£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡MyButton¡¡extends¡¡Button¡¡£û¡¡¡¡
¡¡¡¡int¡¡clickCounter£»¡¡¡¡
¡¡¡¡String¡¡label¡¡=¡¡¡¨¡¨£»¡¡¡¡
¡¡¡¡public¡¡MyButton£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡enableEvents£¨AWTEvent¡£ACTION_EVENT_MASK£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡paint£¨Graphics¡¡g£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡g¡£setColor£¨Color¡£green£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Dimension¡¡s¡¡=¡¡getSize£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡g¡£fillRect£¨0£»¡¡0£»¡¡s¡£width£»¡¡s¡£height£©£»¡¡¡¡
¡¡¡¡¡¡¡¡g¡£setColor£¨Color¡£black£©£»¡¡¡¡
¡¡¡¡¡¡¡¡g¡£drawRect£¨0£»¡¡0£»¡¡s¡£width¡¡1£»¡¡s¡£height¡¡1£©£»¡¡¡¡
¡¡¡¡¡¡¡¡drawLabel£¨g£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡private¡¡void¡¡drawLabel£¨Graphics¡¡g£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡FontMetrics¡¡fm¡¡=¡¡g¡£getFontMetrics£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡int¡¡width¡¡=¡¡fm¡£stringWidth£¨label£©£»¡¡¡¡
¡¡¡¡¡¡¡¡int¡¡height¡¡=¡¡fm¡£getHeight£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡int¡¡ascent¡¡=¡¡fm¡£getAscent£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡int¡¡leading¡¡=¡¡fm¡£getLeading£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡int¡¡horizMargin¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£¨getSize£¨£©¡£width¡¡width£©/2£»¡¡¡¡
¡¡¡¡¡¡¡¡int¡¡verMargin¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£¨getSize£¨£©¡£height¡¡height£©/2£»¡¡¡¡
¡¡¡¡¡¡¡¡g¡£setColor£¨Color¡£red£©£»¡¡¡¡
¡¡¡¡¡¡¡¡g¡£drawString£¨label£»¡¡horizMargin£»¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡verMargin¡¡£«¡¡ascent¡¡£«¡¡leading£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡processActionEvent£¨ActionEvent¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡clickCounter£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡label¡¡=¡¡¡¨click¡¡#¡¨¡¡£«¡¡clickCounter¡¡£«¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨¡¡¡¨¡¡£«¡¡e¡£toString£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡repaint£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡super¡£processActionEvent£¨e£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡447¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡449¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡¡¡¡¡
public¡¡class¡¡BadTechnique¡¡extends¡¡Frame¡¡£û¡¡¡¡
¡¡¡¡BadTechnique£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡setLayout£¨new¡¡GridLayout£¨2£»2£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡add£¨new¡¡EnabledPanel£¨1£»¡¡Color¡£cyan£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡add£¨new¡¡EnabledPanel£¨2£»¡¡Color¡£lightGray£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡add£¨new¡¡EnabledPanel£¨3£»¡¡Color¡£yellow£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡You¡¡can¡¡also¡¡do¡¡it¡¡for¡¡Windows£º¡¡¡¡
¡¡¡¡¡¡¡¡enableEvents£¨AWTEvent¡£WINDOW_EVENT_MASK£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡processWindowEvent£¨WindowEvent¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨e£©£»¡¡¡¡
¡¡¡¡¡¡¡¡if£¨e¡£getID£¨£©¡¡==¡¡WindowEvent¡£WINDOW_CLOSING£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println¡¡£¨¡¨Window¡¡Closing¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£exit£¨0£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Frame¡¡f¡¡=¡¡new¡¡BadTechnique£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡f¡£setTitle£¨¡¨Bad¡¡Technique¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡f¡£setSize£¨700£»700£©£»¡¡¡¡
¡¡¡¡¡¡¡¡f¡£setVisible£¨true£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
µÄÈ·£¬ËüÄܹ»¹¤×÷¡£µ«È´ÊµÔÚÌ«õ¿½Å£¬¶øÇÒºÜÄѱàд¡¢ÔĶÁ¡¢µ÷ÊÔ¡¢Î¬»¤ÒÔ¼°ÔÙÉú¡£¼ÈÈ»Èç´Ë£¬ÎªÊ²Ã´»¹²»¡¡
ʹÓÃÄÚ²¿½ÓÊÕÆ÷ÀàÄØ£¿¡¡¡¡
13¡£17¡¡Java¡¡1¡£1¡¡Óû§½Ó¿Ú¡¡API¡¡¡¡¡¡
Java¡¡1¡£1¡¡°æͬÑùÔö¼ÓÁËһЩÖØÒªµÄй¦ÄÜ£¬°üÀ¨½¹µã±éÀú£¬×ÀÃæÉ«²Ê·ÃÎÊ£¬´òÓ¡¡°É³ÏäÄÚ¡±¼°ÔçÆڵļôÌù°å¡¡
Ö§³Ö¡£¡¡¡¡
½¹µã±éÀúÊ®·ÖµÄ¼òµ¥£¬ÒòΪËüÏÔÈ»´æÔÚÓÚAWT¡¡¿âÀïµÄ×é¼þ²¢ÇÒÎÒÃDz»±ØΪʹËü¹¤×÷¶øÈ¥×öÈκÎÊ¡£Èç¹ûÎÒÃÇ¡¡
ÖÆÔìÎÒÃÇ×Ô¼º×é¼þ²¢ÇÒÏëʹËüÃÇÈ¥´¦Àí½¹µã±éÀú£¬ÎÒÃǹýÔØ¡¡isFocusTraversable£¨£©ÒÔʹËü·µ»ØÕæÖµ¡£Èç¹ûÎÒ¡¡
ÃÇÏëÔÚÒ»¸öÊó±êµ¥»÷Éϲ¶×½¼üÅ̽¹µã£¬ÎÒÃÇ¿ÉÒÔ²¶×½Êó±ê°´ÏÂʼþ²¢ÇÒµ÷ÓÃrequestFocus£¨£©ÐèÇ󽹵㷽·¨¡£¡¡¡¡
13¡£17¡£1¡¡×ÀÃæÑÕÉ«¡¡¡¡
ÀûÓÃ×ÀÃæÑÕÉ«£¬ÎÒÃÇ¿ÉÖªµÀµ±Ç°Óû§×ÀÃ涼ÓÐÄÄЩÑÕÉ«Ñ¡Ôñ¡£ÕâÑùÒ»À´£¬¾Í¿ÉÔÚ±ØÒªµÄʱºòͨ¹ý×Ô¼ºµÄ³ÌÐò¡¡
À´ÔËÓÃÄÇЩÑÕÉ«¡£ÑÕÉ«¶¼»áµÃÒÔ×Ô¶¯³õʼ»¯£¬²¢ÖÃÓÚSystemColor¡¡µÄstatic¡¡³ÉÔ±ÖУ¬ËùÒÔÒª×öµÄΨһÊÂÇé¾Í¡¡
ÊǶÁÈ¡×Ô¼º¸ÐÐËȤµÄ³ÉÔ±¡£¸÷ÖÖÃû×ÖµÄÒâÒåÊDz»ÑÔ¶øÓ÷µÄ£ºdesktop£¬activeCaption£¬¡¡¡¡
activeCaptionText£¬activeCaptionBorder£¬¡¡inactiveCapt¡¡ion£¬¡¡inactiveCaptionText£¬¡¡
inactiveCaptionBorder£¬¡¡window£¬¡¡windowBorder¡¡£¬¡¡windowText£¬¡¡menu£¬menuText£¬text£¬¡¡textText£¬¡¡¡¡
textHighlight£¬¡¡textHighlightText¡¡£¬textInactiveText£¬control£¬¡¡controlText£¬¡¡controlHighlight£¬¡¡
controlLtHighlight£¬controlShadow¡¡£¬controlDkShadow£¬¡¡scrollbar£¬¡¡info¡¡£¨ÓÃÓÚ°ïÖú£©ÒÔ¼°infoText¡¡
¡¡£¨ÓÃÓÚ°ïÖúÎÄ×Ö£©¡£¡¡¡¡
13¡£17¡£2¡¡´òÓ¡¡¡¡¡
·Ç³£²»ÐÒ£¬´òӡʱûÓжàÉÙÊÂÇéÊÇ¿ÉÒÔ×Ô¶¯½øÐеġ£Ïà·´£¬ÎªÍê³É´òÓ¡£¬ÎÒÃDZØÐë¾Àú´óÁ¿»úеµÄ¡¢·Ç¡¡OO¡¡
¡¡£¨ÃæÏò¶ÔÏ󣩵IJ½Öè¡£µ«´òÓ¡Ò»¸öͼÐλ¯µÄ×é¼þʱ£¬¿ÉÄܶàÉÙÓеã¶ù×Ô¶¯»¯µÄÒâ˼£ºÄ¬ÈÏÇé¿öÏ£¬print£¨£©·½¡¡
·¨»áµ÷ÓÃpaint£¨£©À´Íê³É×Ô¼ºµÄ¹¤×÷¡£´ó¶àÊýʱºòÕⶼÒѾ×ã¹»ÁË£¬µ«¼ÙÈ绹Ïë×öһЩÌرðµÄÊÂÇ飬¾Í±ØÐë¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡448¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡450¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ÖªµÀÒ³ÃæµÄ¼¸ºÎ³ß´ç¡£¡¡¡¡
ÏÂÃæÕâ¸öÀý×ÓÍ
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾Ñé½±Àø£¬ÈÏÕæдԴ´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾Ñé½±ÀøŶ£¡