קטעי קוד מענינים
הרבה מהחומר בתוכנית זו הוכלל ונכתב עליו בתוכניות דוגמא בשיעורים קודמים.חלקים אלו של קוד לא יודגשו כאן.
הקטע קוד הראשון שמעניין מורכב ממספר הצהרות מה-constructor שנדרשו כדי לתת אינסטנס לאובייקט מסוג CustomComponent וליצור אובייקט מסוג KeyListener על רכיב זה.
הקוד שנראה לאחר מכן הוא קוד של אובייקט ה KeyListener שתופס את אובייקטי אירוע המפתח,ויוצר אובייקטי אירועי מפתח
מלאכותיים ושולח אותם לאובייקט ה CustomComponent.זאת הסיבה שתוכנית זאת יכולה להחשה כמיירטת אובייקטי אירוע
מפתח וממירה אותם לאובייקטי אירוע עכבר.
CustomComponent myCustomComp = new CustomComponent(); this.add(myCustomComp); ... myCustomComp.addKeyListener( new MyKeyListener(myCustomComp)); |
קטע הקוד המעניין הבא הוא הצהרה בתוך מחלקת ה KeyListenerשיוצרת אובייקט אירוע עכבר מלאכותי ושולחת אותו לתור
אירועי המערכת.כמו שאתה יכול לראות הsyntax של הצהרה זו הוא די מסובך.
מוקדם יותר בשיעור זה, סיפקנו הגדרה עבור כל פרמטר בconstructor של אירוע העכבר כדי שתוכל לקחת אותם.
לדוגמא,הפרמטר הראשון הוא myCustomComp שהוא משתנה התייחסות לרכיב הcustom.
הו הפרמטר שמתייחס לsource בתיאור הקודם.אתה צריך גם לזהות את הפרמטר השני כ MouseEvent.MOUSE_CLICKED שהוא אחר מהערכים האפשריים לid שהוצגו קודם לכן.
Toolkit.getDefaultToolkit(). getSystemEventQueue(). postEvent(new MouseEvent(myCustomComp, MouseEvent.MOUSE_CLICKED,0,0, -1,-1,2,false)); |
כמו שהזכרנו קודם,ערך ההתחלה של הקוארדינטות x וy הוא 1- כדי לזהות אובייקט מסוג זה בקלות כאשר הם מגיעים
למתודה processMouseEvent() (אירועי ה"קליק" האמיתיים בעלי קוארדינטות שליליות).
התיעוד הטוב ביותר (והיחיד) בהתייחס לשארית הsyntax נמצא ב Specification AWT Enhancements Design
תחת Delegation Event Model בחלק תחת הכותרת The Event Queue.
אתה יכול להוריד מסמך זה מjavasoft או לקרוא אותו אינטראקטיבית.
החלק הזה (שהוא כל התיעוד שהצלחתי לאתר על נושא זה) חוזרים עליו שוב בהמשך לצורך הבנתו בצורה ברורה.
The Event QueueAnother feature of the 1.1 event model is the addition of an event queue class: java.awt.EventQueue This class provides a number of public instance methods to manipulate the queue: public synchronized void postEvent(AWTEvent e) public synchronized AWTEvent getNextEvent() public synchronized AWTEvent peekEvent() public synchronized AWTEvent peekEvent(int eventID) Programs can actually use this class to instantiate their own event In the default JDK implementation, all events generated on components The Toolkit class provides a method to access the handle of the system EventQueue instance: public final EventQueue getSystemEventQueue() It would obviously be a security problem to allow untrusted applets |
נקווה שהאנשים מjavasoft לא יכעסו שלקחנו מידע זה מילה במילה מהמדריך.
הקטע קוד המעניין הבא הוא הצהרה בתוך הconstructor של מחלקת ה .CustomComponentראינו הצהרה זו בעבר
והיא חוזרת כאן לצורך הדגשה.הצהרה זו דרושה לצורך השלטת מתודת הprocessMouseEvent() כדי שתופעל בכל פעם
שנשלח אירוע עכבר אל אובייקט של מחלקת הCustomComponent .
enableEvents(AWTEvent.MOUSE_EVENT_MASK ); |
הקטע קוד המעניין האחרון היא המתודה המושלטת processMouseEvent() שמכריזה שהמתודה הופעלה
ומציגה את ערך הid ואת ערכי הקוארדינטות מהאובייקט.
ציין לעצמך שוב את הקריאה למתודה super.processMouseEvent() בסוף המתודה.אם שכחת לעשות זאת התוצאה תהייה
לא צפוייה ובדרך כלל לא טובה.
public void processMouseEvent(MouseEvent e) { System.out.println( "In processMouseEvent in CustomComponent. ID = " + e.getID() + " " + e.getPoint()); //ALWAYS DO THIS IF YOU OVERRIDE the method. super.processMouseEvent(e); }//end processMouseEvent |
כל מה שנשאר זה מחלקת WindowListener הסטנדרטית,מחלקה שראינו מספר פעמים בעבר.
קטע הקוד דימה חלקים מהותיים ביצירת ושליחת אירועים מלאכותיים.