» נושאי לימוד
» נושאי לימוד
יום שני 29 באפריל 2024
תוכנית דוגמא
דף ראשי  מתקדמים  Posting Synthetic Events to the System Event Queue  תוכנית דוגמא גרסה להדפסה

 

תוכנית דוגמא

 

התוכנית עוצבה כך שתקומפל ותורץ תחת   JDK1.1.1 . היא מדגימה את השימוש המתודה  postEvent() לשלוח אירועים

לתור האירועים של המערכת. התוכנית גם ממשיכה ומדמה יצירת רכיב חדש מסוג מסויים שיורש ממחלקות קיימות. הנושא הזה מפורט בסדרת ההרצאות הקודמות.

היכולת לשלוח אירועים לתור האירועים של המערכת  משמשת בדוגמא זו לצורך עיכוב מפתחות האירועים ולהמיר אותם

לאירועי עכבר.            

אובייקט ה  GUI- העיקרי הוא אינסטנס של מחלקה שיורשת מ-FRAME .

מחלקה נהוגה ששמה   CustomComponent מוגדרת,המחלקה יורשת ממחלקת הLabel - .

אובייקטים של המחלקה הזו מסוגלים להגיב לאירועי עכבר ואירועי מפתח.

אובייקט של מחלקה זו מתווסף לאובייקט  ה  Frame העיקרי.

ירושה ממחלקת הLabel מאפשרת להשליט את מתודת הprocessMouseEvent() על אובייקטי הLabel.

המתודה המושלטת  processMouseEvent() מסופקת עבור מחלקת הCustomComponent.

אירועי עכבר יכולים לפעול על אובייקטי המחלקה כך ש כל אירוע עכבר על אובייקט ישלח למתודת  הprocessMouseEvent() .

כמו שתמיד דרוש במצבים כגון אלו,המתודה המושלטת  processMouseEvent() מעבירה את אובייקט אירוע העכבר

למתודה שעם אותו שם כמו של המתודה מהמחלקה המורישה לפני שהיא מסתיימת.

קליקי העכבר הפיזיים על אובייקט CustomComponent נשלחים למתודת הprocessMouseEvent()  היכן שמידע

על האירועים מוצג למסך.

אירועי מפתח נתפסים על ידי אובייקט הKeyListener .כאשר אירוע מפתח נתפס אובייקט MouseEvent מלאכותי נוצר

נשלח לתור אירועי המערכת.אובייקט הKeyListener יוצר אירוע עכבר מלאכותי לפי הגדרת הJDK 1.1.1.

 

  public MouseEvent(Component source,
                    int id,
                    long when,
                    int modifiers,
                    int x,
                    int y,
                    int clickCount,
                    boolean popupTrigger)

     Constructs a MouseEvent object with the specified 
     source component, type, modifiers, coordinates, and 
     click count. 

     Parameters: 
          source - the object where the event originated 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

במקרה זה פרמטר הsource הוא משתנה התייחסות לאובייקט הCustomComponent.

לx וy נותנים ערך של 1- כדי שיהייה קל יותר לזהות את האובייקט כאשר הוא מגיע אל מתודת הprocessMouseEvent() .

(אירועי "קליק" אמיתיים לא יהיו עם ערכי קוארדינטות שלילים.)

ערכים שרירותיים  ניתנים לwhen ,modifier,  .clickCount, popupTrigger

ערך שרירותי לא ניתן לפרמטר הid . זה חיוני שבבניית האובייקט MouseEvent ערך שדה הid יתאים לאחד מהקבועים

שמוגדרים במחלקת הMouseEvent  .(מספיק להבטיח שהערך יהייה בטווח הערכים שיכול לקבל אירוע עכבר.אין כרגע

מסמכים על עניין זה ואני לא בחנתי עניין זה.) קבועים אלו מצויינים להלן:

·        MOUSE_CLICKED – אירוע הקשת עכבר.

 

·        MOUSE_DRAGGED- אירוע גרירת עכבר.

 

·        MOUSE_ENTERED- אירוע כניסת עכבר.

 

·        MOUSE_EXITED- אירוע יציאת עכבר.

 

·        MOUSE_FIRST- מסמן את המספר השלם המינימלי האפשרי לטווח הid של אירועי עכבר.

 

·        MOUSE_LAST- מסמן את המספר השלם המקסימלי האפשרי לטווח הid של אירועי עכבר.

 

·        MOUSE_MOVED- אירוע תזוזת עכבר.

 

·        MOUSE_PRESSED- אירוע לחיצת עכבר.

 

·        MOUSE_RELEASED- אירוע שחרור עכבר.

 

אם ערך שדה הid אינו תואם את אחד מערכים אלו (או אינו נמצא בטווח המותר) המערכת לא תשלח את האובייקט ליעד המקבל.ואין warning או exception ,האובייקט פשוט לא נשלח (שאריות מC ו(C++

 

כאשר תוכנית מתחילה,אובייקט Frame מופיע על המסך ממולא על ידי אובייקט הCustomComponent .

פלט טיפוסי של תוכנית בזמן שהעכבר מקיש על אובייקט ה      CustomComponent וכאשר המפתחות x וy שהוקשו

מוראים למטה.( הקוארדינטות  x וy  בעלי ערך של 1-   לצורך ציון אירועי עכבר מלאכותיים מיוצרות על ידי אובייקט ה KeyEventListener )

 

In processMouseEvent in CustomComponent. 
  ID = 504 java.awt.Point[x=156,y=70]
In processMouseEvent in CustomComponent. 
  ID = 505 java.awt.Point[x=0,y=32]
In processMouseEvent in CustomComponent. 
  ID = 504 java.awt.Point[x=4,y=9]
In processMouseEvent in CustomComponent. 
  ID = 501 java.awt.Point[x=25,y=13]
In processMouseEvent in CustomComponent. 
  ID = 502 java.awt.Point[x=25,y=13]
In processMouseEvent in CustomComponent. 
  ID = 500 java.awt.Point[x=25,y=13]
In keyPressed() method, the key pressed was x
In processMouseEvent in CustomComponent. 
  ID = 500 java.awt.Point[x=-1,y=-1]
In keyPressed() method, the key pressed was y
In processMouseEvent in CustomComponent. 
  ID = 500 java.awt.Point[x=-1,y=-1]
In processMouseEvent in CustomComponent. 
  ID = 505 java.awt.Point[x=105,y=96]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                                                                                     התוכנית נבדקה תחת  JDK 1.1.1ו  Win95.

 

הערת אגב מענינת,תוכנית זו יכולה גם להדגים טעויות בהסט הקוארדינטות ב JDK 1.1 (לפחות בגרסאות ל Win95)

נפתרו ב JDK 1.1.1.

 

 31-10-03 / 15:14  נוצר ע"י רונית רייכמן  בתאריך 
 Posting Synthetic Events to the System Event Queue - הקודםהבא - קטעי קוד מענינים 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 6