בעיה קטנה ב-JAVA.

Archer Inc

New member
בעיה קטנה ב-JAVA.

לפי מה שהבנתי, הדרך הסטנדרטית לאפשר תגובה לפעולת משתמש מתחילה בד"כ ברישום איזשהו מאזין לעצם, לדוגמא:
ListenedTo.AddActionListener(Listener);​
עכשיו, הבעיה שלי היא: מה קורה כאשר לא הגדרתי Reference לפריט לו אני רוצה "להאזין"? למשל, במקרה הבא:
Menu fileMenu=new Menu("file"); Menu editMenu=new Menu("edit"); fileMenu.add(new MenuItem("New")); editMenu.add(new MenuItem("Frame"));​
אם ארצה להוסיף תגובה ללחיצה על הפריטים בתפריט, כיצד אעשה זאת? האם ישנה איזושהי אפשרות להגיע אליהם דרך התפריט אליו הם שייכים? כמו כן, שאלה נוספת: שמתי לב שפעולות מסוגים רבים ומשונים מוגדרות כ-Action. כשאני מממש את ממשק המאזין ActionListener, ובפרט את הפונקציה actionPerformed(ActionEvent e), היכן אעשה את ההפרדה בין סוגי ה-Action השונים וכיצד? הרי אין אפשרות להעמסת פונקציות, מכיוון שממילא הקלט יהיה מסוג Action. או שיש?
 

Archer Inc

New member
הבהרה-

בשאלה הראשונה, הכוונה היא לפריטים המכונים "new" ו-"frame", ולא לתפריטים עצמם, מן הסתם.
 

Archer Inc

New member
ולגבי השאלה השנייה...

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

zeevb

New member
דרך אפשרית...

הייתי מוסיף את ה-Listeners כבר בזמן הבניה ואז אין צורך לחפש אותם בתפריט:
Menu fileMenu=new Menu("file"); MenuItem item = new MenuItem("New"); item.addActionListener(...​
לגבי ה-Actions השונים - פתרון פשוט הוא לשים ActionListener נפרד לכל פעולה.
 

Zack DA

New member
ממש לא הבנתי את השאלות שלך,

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