» נושאי לימוד
» נושאי לימוד
יום שני 29 באפריל 2024
קטעי קוד מעניינים
דף ראשי  מתקדמים   טיפול בארועים ((EVENT HANDLING ב- JDK 1.1 אירועי Scrollbar  התכנית לדוגמה  קטעי קוד מעניינים גרסה להדפסה

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

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

אובייקט מסוג GUI שבו נעשית כל העבודה.

import java.awt.*;
import java.awt.event.*;

class Event18{
  public static void main(String[] args){
    GUI gui = new GUI(); 
  }//end main
}//end class Event18

 

 

 

 

 

 

 

 

 

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

class GUI{
  Scrollbar myScrollbar;
  TextField displayWindow;
  int bubbleWidth;//needs to be accessible by event handler

 

 

 

 

 

 

הקטע הבא מתחיל בפונקציה בונה (constructor) עבור המחלקה GUI . היא מתחילה על ידי יצירת מופע של אובייקט

Frame שישמש חלון על לאפליקציה.

 

לאחר מכן יש יצירת מופע של אובייקט scrollbar אופקי , עם טווח 0 עד 100, מיקום התחלתי ב-50 ,רוחב בועה של 20 ,

ערךUnit Increment    2 וערךBlock Increment  15 .

 

מרכיב ה-Scrollbar לא ממרכז את הבועה לפי הערך שניתן, אלא הקצה השמאלי של הבועה מיושר לפי הערך.

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

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

והמקסימום מעבר לערכים הרצויים בחצי רוחב בועה.

  GUI(){
    Frame myFrame = new Frame("Copyright 1997, R.G.Baldwin");

    bubbleWidth = 20;
    int initialPosition = 50 - bubbleWidth/2;
    int min = 0 - bubbleWidth/2;
    int max = 100 + bubbleWidth/2;
    myScrollbar = new Scrollbar(Scrollbar.HORIZONTAL, 
                    initialPosition, bubbleWidth, min, max);

 

 

 

 

 

הקטע

 

 

 

 

הבא קובע את ערךUnit Increment    ל-2 וערךBlock Increment  ל-15 .

Unit Increment הוא ערך השינוי הנגרם על ידי לחיצה באחד הקצוות של ה-Scrollbar . Block  Increment הוא ערך

השינוי הנגרם על ידי לחיצה ברווח בין הבועה לאחד הקצוות של ה-Scrollbar .

    myScrollbar.setBlockIncrement(15);
    myScrollbar.setUnitIncrement(2);

 

 

 

 

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

 

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

ה-Frame ומציג את כל זה.

 

הקטע גם מכיל קוד טיפוסי ליצירת אובייקט listener בשביל ה- Scrollbar וגורם שיקבל הודעות על אירועי adjustment .

לאחר מכן מופיע קוד טיפוסי לרישום (register) חלון listener כדי להפסיק את התכנית כאשר המשתמש לוחץ על תיבת

Close ב-Frame .

בזה מסתיים ה-constructor והגדרת המחלקה GUI .

    displayWindow = new TextField("Initial Text");
    displayWindow.setEditable(false);//make non-editable

    //add components to the GUI
    myFrame.add("South", myScrollbar); 
    myFrame.add("North", displayWindow);
    myFrame.setSize(300,75);
    myFrame.setVisible(true);

    MyScrollbarListener myScrollbarListener = 
      new MyScrollbarListener(this);    
    //Note that the Scrollbar listener is not added as a 
    // ScrollbarListener but rather is added as an 
    // AdjustmentListener.
    myScrollbar.addAdjustmentListener(myScrollbarListener);

    //Close Frame to terminate.    
    myFrame.addWindowListener(new MyWindowListener());
  }//end constructor
}//end class GUI

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

קטע הקוד הבא מתחיל להיות שוב מעניין, הוא מראה את ההתחלה של המחלקה  AdjustmentListener שממנה נוצר

אובייקט listner ונרשם ב-Scrollbar  להאזין לאירועי adjustment . קטע זה מראה את ה-constructor של המחלקה

ששומר התייחסות (refrence) ל-Scrollbar .

class MyScrollbarListener implements AdjustmentListener{
  GUI thisObject; //save ref to GUI object here
  
  MyScrollbarListener(GUI objectIn){//constructor
    thisObject = objectIn;
  }//end constructor

 

 

 

 

 

 

 

הקטע הבא מתחיל את הקוד שמכיל את לב התכנית , זוהי המתודה  adjustmentValueChanged() ,שהיא המתודה היחידה המוצהרת במנשק  AdjustmentListener. מתודה זו מקבלת כפרמטר אובייקט מסוג AdjustmentEvent .

 

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

  public void adjustmentValueChanged(AdjustmentEvent e){
    int value;
    //Display the entire AdjustmentEvent object
    System.out.println(e); 
    System.out.println("Adjustable = " + e.getAdjustable());
    System.out.println("AdjustmentType = " 
                                   + e.getAdjustmentType());

 

 

 

 

קטע פלט

 

 

 

זה נוצר על ידי הקטע לעיל כאשר נלחץ הכפתור בקצה הימני של ה-Scrollbar . (הוכנסה חלוקה לשורות

על ידי המחבר).

java.awt.event.AdjustmentEvent[ADJUSTMENT_VALUE_CHANGED,
     adjType=UNIT_INCREMENT,value=42] on scrollbar0
Adjustable = java.awt.Scrollbar[scrollbar0,4,56,292x15,
     val=42,vis=20,min=-10,max=110,horz]
AdjustmentType = 1

 

 

 

 

 

 

 

הקטע הבא משתמש באובייקט הנכנס כדי לקבל את הערך של ה-scrollbar ולהציג אותו באובייקט TextField .

הערך  צריך לייצג את מיקום הבועה (למעשה הוא מייצג את מיקום הקצה השמאלי של הבועה ולא את המרכז).

 

קטע זה מכיל קוד לשימוש כ-"מעקף" לבאג ב- JDK 1.1.6 שבו ערכים שליליים קטנים מדווחים כערכים חיוביים גדולים,

כאשר ה-scrollbar "מותאם" על ידי גרירת הבועה. שימו לב שהבאג עדיין קיים ב-JDK 1.1.6  אך תוקן ב-   .JDK 1.2

 

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

הבועה.הערך המותאם מוצג באובייקט ה-TextField.

 

הוא גם מכיל קוד לפתור באג אחר שגורם לבועה לקפוץ חזרה לערכה הקודם כאשר מנסים לגרור אותה ב- JDK 1.1.6  .

זה גם תוקן ב-   .JDK 1.2

    value = e.getValue();//get and save the value
    
    //The following code is here to work around a 
    // bug in the Scrollbar object for JDK 1.1.6
    if(value > 65000) 
      value = value - 65536;

    //Adjust value to center of the bubble
    thisObject.displayWindow.setText("Value = " 
                      + (value + thisObject.bubbleWidth/2));
            
    //The following is required to make the bubble stay put
    // in JDK 1.1.6 (not required for JDK 1.2)
    thisObject.myScrollbar.setValue(value);
  }//end adjustmentValueChanged()
  
}//end class MyScrollbarListener

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 18-10-03 / 00:27  נוצר ע"י רונית רייכמן  בתאריך 
 התכנית לדוגמה - הקודםהבא - פירוט התכנית 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 5