» נושאי לימוד
» נושאי לימוד
יום שני 29 באפריל 2024
קטעי קוד מעניינים
דף ראשי  מתקדמים  Component Impersonation  קטעי קוד מעניינים גרסה להדפסה

קטעי קוד מעניינים

 

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

 

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

 

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

 

    clickMeLabel.addMouseListener(
            new MyMouseListener(clickMeButton));
    clickMeButton.addActionListener(
            new MyActionListener(colorMeLabel));

 

 

 

 

 

 

קטע הקוד המעניין הבא היא ההצהרה בתוך המתודה עכבר לחוץ (mouseClicked()) של אובייקט המאזין לעכבר, המייצרת ושולחת אובייקט אירוע פעולה מזוייף ומייחסת אותו לכפתור. זה אפשרי לקוד זה לייחס את האירוע לאובייקט הכפתור רק בגלל שיש לו גישה למצביע התייחסות לאובייקט הכפתור.

 

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

 

בגלל שאובייקט אירוע הפעולה המזוייף מיוחס לכפתור, i 1000 t נשלח לאובייקט המאזין לפעולות של הכפתור, שם  הוא מעובד כאילו הוא באמת יוצר ע"י הכפתור.

 

    //Note that the following is a single statement
    Toolkit.getDefaultToolkit().
        getSystemEventQueue().
        postEvent(new ActionEvent(clickMeButton,
                                  ActionEvent.
                                  ACTION_PERFORMED,
                                  "counterfeit"));

  

 

 

 

 

 

 

 

 

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

ההגדרה הבאה

 

 public ActionEvent(Object source,
                    int id,
                    String command)

Constructs an ActionEvent object with the 
specified source object.
 

Parameters: 

source - the object where the event 
originated  

id - the type of event 
command - the command string for this  
action event 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

הפרמטרים:

source- האובייקט שבו האירוע נוצר.

i.d- סוג האירוע.

Command-  מחרוזת הפקודה עבור אירוע הפעולה הזה.

 

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

 

כפי שנאמר בשיעור קודם מאוד חשוב לתת פרמטר זיהוי (i.d) נכון. אחרת אובייקט אירוע הפעולה לא יישלח ע"י מערכת הזמן ריצה.

 

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

 31-10-03 / 15:46  עודכן ,  31-10-03 / 15:38  נוצר ע"י רונית רייכמן  בתאריך 
 Component Impersonation - הקודםהבא - רשימת התוכנית 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 2