חלקי קוד מעניינים
חלק הקוד הראשון המענין הוא היצירה וההוספה של האוביקט המורחב והחדש לאובייקט הפריים הראשי.
NumericTextField myNumericTextField; add(myNumericTextField = new NumericTextField());//add a custom component |
חלק הקוד המענין הבא בתוך הבנאי לאוביקט של הרכיב המורחב החדש. כאשר הצהרה זו מבוצעת, כל מקרי הקשת המקשים שקורים באוביקט באופן אוטומטי נשלחים לארוע הנקרא PROCESSKEYEVENT().
enableEvents(AWTEvent.KEY_EVENT_MASK); |
דרך אחרת לתאר את המצב היא שלאחר שהצהרה שלעיל בוצעה, ההתרחשות של ארוע הקשת מקש באוביקט של המחלקה יגרום להפעלת PROCESSKEYEVENT() באופן אוטומטי וארוע של האוביקט יעבור לארוע כפרמטר. ארוע זה צריך להדרס כדי ליצור את ההתנהגות נדרשת.
החלק של הקוד המענין הבא הוא לדרוס לגמרי את PROCESSKEYEVENT() .
protected void processKeyEvent(KeyEvent e){ if(e.getID() == KeyEvent.KEY_TYPED)//KEY_TYPED is key-down //and key-up if(!((e.getKeyChar() = '0') && (e.getKeyChar() <= '9'))) e.setKeyChar('\000'); super.processKeyEvent(e);//always do this when // overriding processXxEvent }//end processKeyEvent |
יש מספר של סוגים שונים של מקרי הקשת מקש שנשלחים לשיטה הזאת. הקוד בשיטה מתעלם מכולם חוץ מ KEY_TYPED. זה הארוע שקורה כאשר מקש נלחץ ושוחרר.
יש גם מספר של שיטות זמינות לעבודה עם האוביקט KEYEVENT המועבר כפרמטר. חשוב לראות כי במקרה הזה, עיבוד קורה לפני שהתו קושר עם מקרה הקשת המקש הוא למעשה מאוכסן לתוך TEXTFIELD מורחב. לכן, זה אפשרי לעצור את התו ע"י שימוש באובייקט KEYEVENT ולשנות אותו לפני שהוא מאוחסן.
הלוגיקה היא פשוט לוודא שהתו הוא תו מספרי, ואם לא, מחליף את התו על ידי תו אוקטלי עם הערך ' \000 '. זה תו לא חוקי ע"פ התייחסות המערכת, ולכן המערכת מפיקה צלילים ומסרבת לאכסן אותו לתוך ה TEXTFIELD המורחב.
שיטה זאת גם קוראת ל PROCESSKEYEVENT() של האבא ומעבירה את האוביקט הארוע כפרמטר. אין לשכוח לעשות זאת כי בקוד האבא מופיעות מספר משימות קריטיות לביצוע הכולל של המערכת. הדרישה לזכור לעשות זה אחד הסיבות שסאן מזהירים נגד השימוש בשיטה הזאת של טיפול באירועים.
הקוד שנשאר בתוכנית פשוט יוצר כמה מאזינים רגילים בשביל להעתיק את הנתונים ברכיב המורחב והחדש לתוך אובייקט התווית, ובשביל לסיים את התוכנית כאשר המשתמש סוגר את הפריים.
חלקי קוד אלו הראו את המרכיבים המהותיים של יצירת רכיב מורחב והטיפול בארועים ברכיב זה ללא הדרישה ליצור ולרשום אובייקטי מאזינים. התוכנית כולה מובאת בחלק הבא.