» נושאי לימוד
» נושאי לימוד
יום שני 29 באפריל 2024
תוכנית דוגמא 2
דף ראשי  מתקדמים  סוגי אירועים חדשים ב- Swing  תוכנית דוגמא 2 גרסה להדפסה

תוכנית דוגמא 2

 

תוכנית זו ממשיכה להדגים את השימוש במאזין אבות על Jbutton.

 

חשוב מכך, תוכנית זו מדגימה את העובדה החשובה ביותר והיא שאובייקטים של Jbutton הם מכלים אשר יכולים להכיל אובייקטים אחרים, הכוללים את אובייקט Jbutton.

 

תוכנית זו מערימה שלושה אובייקטים שלJbutton  אחד על השני כאשר המחסנית של שלושת האובייקטים ממוקמת על אובייקט Jframe. אובייקטים של ActionListener נרשמים על כל אחד מהכפתורים על מנת לתפוס את האירוע actionPerformed() כאשר ישנה לחיצה על הכפתור,
ועל מנת להציג את מוצא האירוע.

 

אובייקטים של AncestorListener גם כן נרשמים על כל שלושת האובייקטים של Jbutton.

 

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

 

 

Make JFrame visible
In ancestorAdded method
Event source: First Button
In ancestorAdded method
Event source: Second Button
In ancestorAdded method
Event source: Third Button
In ancestorMoved method
Event source: First Button
In ancestorMoved method
Event source: Second Button
In ancestorMoved method
Event source: Third Button
In ancestorMoved method
Event source: First Button
In ancestorMoved method
Event source: Second Button
In ancestorMoved method
Event source: Third Button
In ancestorMoved method
Event source: Second Button
In ancestorMoved method
Event source: Third Button
In ancestorMoved method
Event source: Third Button
In actionPerformed method
Event source: Third Button
In actionPerformed method
Event source: Second Button
In actionPerformed method
Event source: First Button
In ancestorMoved method
Event source: First Button
In ancestorMoved method
Event source: Second Button
In ancestorMoved method
Event source: Third Button

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

תוכנית זו נבדקה תוך שימוש ב- JDK 1.1.6  ו- Swing 1.0.1 תחת Win95.

 

חלקי קוד מעניינים עבור תוכנית דוגמא 2

 

מחלקת הבקרה ופונקצית main() זהות לתוכנית הקודמת, ולכן הושמטו למען הקיצור.

 

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

 

שים לב לשימוש ב- getContentPane() בזמן הכוונת מנהל התצוגה כפי שתואר קודם.

 

שלושה אובייקטים של Jbutton מאותחלים. אחר כך שלושת האובייקטים נערמים על ידי הוספת כפתור שני (secondButton) לכפתור ראשון (firstButton) ואז הוספת כפתור שלישי (thirdButton) לכפתור שני.

 

אובייקט ancestor listener רשום על גבי שלושת הכפתורים ולאחר מכן אובייקט actionListener נרשם על גבי שלושת הכפתורים.

 

שאר הבנאי הוא כמו הקודם והוסר למען הקיצור.

 

class GUI {
  public GUI(){//constructor
    //...snip
    displayWindow.getContentPane().setLayout(
                                         new FlowLayout());
    //...snip
    JButton firstButton = new JButton("First Button");
    JButton secondButton = new JButton("Second Button");
    JButton thirdButton = new JButton("Third Button");
    firstButton.add(secondButton);
    secondButton.add(thirdButton);
    firstButton.addAncestorListener(
                                 new MyAncestorListener());
    secondButton.addAncestorListener(
                                 new MyAncestorListener());
    thirdButton.addAncestorListener(
                                 new MyAncestorListener());
    firstButton.addActionListener(new MyActionListener());
    secondButton.addActionListener(new MyActionListener());
    thirdButton.addActionListener(new MyActionListener());
    //...snip
  }//end constructor

 

מחלקת ancestorListener מאד דומה לגרסה הקודמת, ולכן הגדרת פונקציה אחת בלבד מוצגת בחלק הבא.

 

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

 

  class MyAncestorListener implements AncestorListener{
    public void ancestorAdded(AncestorEvent e){
      System.out.println("In ancestorAdded method");
      System.out.println("Event source: " + 
              ((JButton)e.getSource()).getActionCommand());
    }//end ancestorAdded()
    //...snip
  }//end class MyAncestorListener

 

 

 

 

 

 

 

 

 

 

 

 

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

 

  class MyActionListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
      System.out.println("In actionPerformed method");
      System.out.println("Event source: " +
               ((JButton)e.getSource()).getActionCommand());
    }//end actionPerformed()
  }//end class MyActionListener

 

 08-12-03 / 19:05  עודכן ,  16-10-03 / 17:16  נוצר ע"י רונית רייכמן  בתאריך 
 רישום תוכנית עבור תוכנית דוגמא 1 - הקודםהבא - רישום תוכנית עבור תוכנית דוגמא 2 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 9