תוכנית בדיקה - מקטעי קוד מעניינים
תוכנית זו מתחילה בחלוקה לתת- מחלקות של JFrame כדי ליצור חלון עבור ה- GUI הנבדק. הפונקציה הבונה לאובייקט הזה קובעת את הכינוי, מגדירה את הפריסה (layout) כ- FlowLayout, מוסיפה אובייקט JButton לא פעיל, ואובייקט JTextField לא פעיל. הפרט היחיד כמעט שחדש בקוד שלהלן הוא הדרישה להשתמש במתודה getContentPanel() להוספת רכיבים לאובייקט ה- JFrame. זה אחד ההבדלים העיקריים בין אובייקט Frame של AWTואובייקט JFrame של Swing. אובייקט JFrame מורכב ממיכלים או שכבות שונות שבהם נעסוק באחד השיעורים הבאים, ועליך להוסיף רכיבים חדשים למיכל הקצה
(content pane).
public class Swing04 extends JFrame {//controlling class Swing04(String title) {//constructor // Set the title of the JFrame super(title); //Now create the test GUI for this application. getContentPane().setLayout(new FlowLayout()); //Add some components to be viewed with the new L&F getContentPane().add(new JButton("Dummy JButton")); getContentPane().add(new JTextField("Dummy JTextField")); }//end constructor |
כמו תמיד, יישום זה דורש מתודת main(). במקרה זה, מתודת ה- main() יוצרת מופע לאובייקט מהטיפוס שלה שישמש כ- GUI לבדיקה. היא גם יוצרת מופע לאובייקט אחר מטיפוס JFrame המכיל PlafPanel101 שישמש כ- control לשינוי ה- L&F. מתודת ה- main גם משתמשת במחלקה פנימית אנונימית כדי ליצור אובייקט Window Listener לסגירת התוכנית כשהמשתמש לוחץ על הלחצן close ב- JFrame. מקטע הקוד הבא מציג את יצירת המופע לאובייקט ה- GUI הנבדק ואת יצירת המופע לאובייקט ה- Window Listener. אין באמת שום דבר חדש במקטע הקוד הזה ביחס לקוד ה- AWT שראינו קודם.
public static void main(String args[]) { JFrame jFrame = new Swing04( "Pluggable L&F, Copyright 1998, RG Baldwin"); // Set the size of the JFrame and show it jFrame.setSize(400,100); jFrame.setVisible(true); // Create a WindowAdapter to terminate the program // when the window is closed. jFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); }//end windowClosing() });//end WindowListener |
בסוף, יוצר מקטע הקוד שלהלן מופע לאובייקט JFrame ומוסיף לו אובייקט PlafPanel101. שוב, משתמשים במתודה getContentPane() כאשר מוסיפים רכיב לאובייקט ה- JFrame. חשוב לציין כי הפניה לאובייקט ה- GUI הנבדק (jFrame) מועברת לפונקציה הבונה של אובייקט ה- PlafPanel101 כאשר יוצרים לו מופע. הפניה זו היא שמאפשרת למטפלים באירועים שבאובייקט לשלוט על ה- L&F של אובייקט ה- GUI הנבדק.
מלבד הדרישה להשתמש במתודה getContentPane(), אין במקטע הקוד הזה שום פרט שלא ראינו פעמים רבות במהלך עבודתנו עם ה- AWT.
//Still in main() JFrame myPlafPanel = new JFrame( "PL&F Panel,Copyright 1998,RG Baldwin"); myPlafPanel.getContentPane().add( new PlafPanel01(jFrame)); myPlafPanel.setBounds(0,400,400,150); myPlafPanel.setVisible(true); }//end main() }//end class Swing04 |