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

קבועים לשדה id

אנו דנים בחלקים הנפרדים של ההגדרה למחלקה  Event. זכור כי אחד השדות בהגדרת המחלקה הוא שדה המכונה id המכיל מידע לגבי סוג האירוע. סוג האירוע כלוא בתוך האובייקט כערך integer. סדרה של קבועים תוויים (symbolic constants) מוגדרת בהגדרה של המחלקה שמספקת קבוע תווי התואם את הערך המספרי עבור כל סוג אפשרי של אירוע .רשימה זו של קבועים תוויים כפי שהוצאה מתיעוד ה API  מוצגת להלן:

public final static int ACTION_EVENT;

public final static int GOT_FOCUS;

public final static int KEY_ACTION;

public final static int KEY_ACTION_RELEASE;

public final static int KEY_PRESS;

public final static int KEY_RELEASE;

public final static int LIST_DESELECT;

public final static int LIST_SELECT;

public final static int LOAD_FILE;

public final static int LOST_FOCUS;

public final static int MOUSE_DOWN;

public final static int MOUSE_DRAG;

public final static int MOUSE_ENTER;

public final static int MOUSE_EXIT;

public final static int MOUSE_MOVE;

public final static int MOUSE_UP;

public final static int SAVE_FILE;

public final static int SCROLL_ABSOLUTE;

public final static int SCROLL_LINE_DOWN;

public final static int SCROLL_LINE_UP;

public final static int SCROLL_PAGE_DOWN;

public final static int SCROLL_PAGE_UP;

public final static int WINDOW_DEICONIFY;

public final static int WINDOW_DESTROY;

public final static int WINDOW_EXPOSE;

public final static int WINDOW_ICONIFY;

public final static int WINDOW_MOVED;

הספר “Using Java, Special Edition" מהדורה שנייה, מאת Joseph Weber (הטוען כי הוא "מכסה תכונות חדשות של ה JDK1.1"), מונה 33 קבועים תוויים שונים.
בנוסף לכל הנ"ל, קיימים שישה נוספים עם שמות כמו  WINDOW_EVENT  הכוללים תיאורים כמו  "אירוע חלון כללי"  (“a general window event”). השם התווי  משקף באופן די ברור  את טבעם של חלק מהאירועים.
טבעם של אירועים אחרים נסתר יותר. תיאורים של כל הקבועים התוויים כלולים בתיעוד ה
API  ולא נקדיש זמן לעבור עליהם כאן.
לדוגמא, הנה התיאור של הסוג
KEY_PRESS כפי שהוצא מתיעוד ה API.

 -  KEY_PRESS

 public static final int KEY_PRESS= 401                          

המשתמש לחץ על מקש רגיל.
בעיבוד האירוע, תוציא את שדה ה id מהאובייקט של Event ותשווה  את הערך שלו עם הקבועים התוויים המפורטים לעיל בכדי לקבוע את סוג האירוע שהתרחש.
למשל, אתה יכול להשתמש בפקודה כמו:
                    if (evt.id==KEY_PRESS)…//do something worthwile

 שבה  evtהוא השם המקומי הידוע של האובייקט.
(סביר יותר שתשתמש במבנה
switch מאשר בפקודת if רק בגלל המספר הגדול של ההשוואות שעשויות להיות דרושות).

קבועים לשדה  key

 

כעת, כשאתה יודע לקבוע את סוג האירוע, הבה נעבור הלאה ונראה את האפשרויות עבור השדה keyהערך שכולאים בשדה key יכול לשמש בכדי לקבוע על איזה מקש הקישו עבור אותם הסוגים שבהם מעורבת המקלדת.

 

אפשרות אחת היא, שהערך בשדה key יהיה תואם לערכים שבאופן רגיל אתה מזהה עם תווים מסוג char. למצב זה, אתה יכול להמיר את השדה key כסוג char ולהשתמש בו כפי שהיית משתמש בכל תו רגיל.

 

אפשרות אחרת היא שהמקש עליו לחצו או שאותו שחררו הוא מקש פונקציה, מקש חץ, מקש העמוד הבא/הקודם (PgUp/PgDn) וכו' ולא מיועד להיות מפורש כתו רגיל.

 

אם זה המצב, נקבל התראה על המצב הזה מכיוון שהשדה id יגדיר אחד מהסוגים או KEY_ACTION או את KEY_ACTION_RELEASE. אם השדה id מגדיר אחד משני הסוגים האלה, ניתן להשתמש ברשימה הבאה של ערכים תוויים עם השדה key בכדי לקבוע מי ממקשי  ה"פעולה" (action) היה מעורב.

(יותר מאוחר, נדון באירוע "פעולה" (“action” event) שאינו קשור לשימוש במונח מקש "פעולה" (“action” key) אז אל תתבלבל ביניהם).

 

הרישום הבא של קבועים תוויים הוצא מתיעוד ה API .

השמות שניתנו לקבועים תוויים אלה אמורים לגרום להם להסביר את עצמם.

 

public final static int DOWN;

public final static int END;

public final static int F1;

public final static int F2;

public final static int F3;

public final static int F4;

public final static int F5;

public final static int F6;

public final static int F7;

public final static int F8;

public final static int F9;

public final static int F10;

public final static int F11;

public final static int F12;

public final static int HOME;

public final static int LEFT;

public final static int PGDN;

public final static int PGUP;

public final static int RIGHT;

public final static int UP;

 

בשימוש בפסאודו-קוד אתה יכול להשתמש במה שמובא להלן כדי לעבד את השדה key:

שים לב כי באופן רגיל לא תידרש לבדוק הן את KEY_ACTION והן את KEY_ACTION_RELEASE מכיוון שאחד מייצג את  הסימן בחלקו התחתון  והשני את הסימן בחלקו העליון של אותו המקש.
האחד אינו יכול להופיע ללא השני. שים לב שמקשי הפעולה
“action”)) אינם כוללים את המקש shift, את המקש control, וכו'

במקשים אלה נדון בחלק הבא.

 

קבועים לשימוש שדה Modifiers

 

יש לנו גם סדרה של קבועים תוויים לשימוש עבור השדה המכונה modifiers. רשימת הקבועים הסימבוליים כפי שהוצאה מתיעוד ה API מוצגת להלן. עבור המרצה הנוכחי, שבילה את החלק ביותר טוב של 15 השנים האחרונות בעבודה על פלטפורמות Intel/Microsoft, השמות של כל הקבועים האלה מסבירים את עצמם מלבד הקבוע המכונה META_MASK.

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

 

public final static int ALT_MASK

public final static int CTRL_MASK;

public final static int META_MASK;

public final static int SHIFT_MASK;

 

לעיתים קרובות אתה צריך לדעת האם מקש אחד מאלה או יותר הוחזק לחוץ כשהתרחש אירוע. לדוגמא האם המשתמש הקיש על 1F או על 1CTRL-F. אתה יכול לקבוע זאת על ידי  ביצוע של and bitwise (ז"א, הסימן הלוגי & לand- ברמה של סיביות) תוך שימוש בערך מהשדה modifiers ובאחד מהקבועים התוויים שמפורטים לעיל. לדוגמא, בכדי לקבוע האם המקש alt הוחזק לחוץ כשהאירוע התרחש אתה יכול להשתמש בקוד כמו:

 

boolean altKeyPressed=(evt.modifiers & Event.ALT_MASK)!= 0 ;

 

שים לב שזה ה bitwise and (&) - and ברמת הסיבית ולא ה-and  הלוגי הרגיל (&&).

יותר מאוחר, אנו נלמד כנושא צדדי גם על מתודות ברמה- יותר -גבוהה המכונות shiftDown()
ו-
controlDown() שיכולות לספק לנו מידע דומה, אך אין שום מתודת  altDown()
שניתן להשתמש בה כחלופה להנ"ל.

 07-12-03 / 19:13  עודכן ,  11-10-03 / 14:07  נוצר ע"י רונית רייכמן  בתאריך 
 המחלקה Event - הקודםהבא - מתודות 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 6