إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    Swing طريقة إنشاء نافذة

    مقدمة

    النافذة تسمى Frame و هناك كلاس خاص لإنشاء النوافذ إسمه JFrame.

    لإنشاء نافذة هناك طريقتين يمكنك إعتماد إحداهما:

    1. من خلال إنشاء كائن من الكلاس JFrame.
    2. من خلال وراثة الكلاس JFrame, ثم إنشاء كائن من الكلاس الذي ورثه.

    أمثلة حول طرق إنشاء نافذة


    المثال الأول

    في المثال التالي ستتعلم طريقة إنشاء نافذة فارغة من خلال إنشاء كائن من الكلاس JFrame.

    Main.java
    import javax.swing.JFrame;
     
    public class Main {
     
        public static void main(String[] args) {
     
            JFrame f = new JFrame();                            // أي قمنا بإنشاء نافذة JFrame هنا أنشأنا كائن من الكلاس
            f.setSize(500, 400);                                // هنا قمنا بتحديد حجم النافذة. عرضها 500 و طولها 400
            f.setVisible(true);                                 // هنا جعلنا النافذة مرئية
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
     
        }
     
    }
    		

    ستظهر لك النافذة التالية عند التشغيل.



    المثال الثاني

    في المثال التالي ستتعلم طريقة إنشاء نافذة فارغة من خلال وراثة الكلاس JFrame.

    Main.java
    import javax.swing.JFrame;
     
    public class Main extends JFrame {
     
        public Main() {                                     // نقوم بتجهيز كل شيء متعلق بالنافذة JFrame في كونستركتور الكلاس الذي يرث من الكلاس
            this.setSize(500, 400);                         // هنا قمنا بتحديد حجم النافذة. عرضها 500 و طولها 400
            this.setVisible(true);                          // هنا جعلنا النافذة مرئية
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
        }
     
     
        public static void main(String[] args) {
            new Main();                            // أي قمنا بإنشاء نافذة Main هنا أنشأنا كائن من الكلاس
        }
     
    }
    		

    ستظهر لك النافذة التالية عند التشغيل.


    إنتبه: يمكن عدم وضع الكلمة this و سيعمل الكود أيضاً بشكل طبيعي.
    وضعنا this فقط حتى لا تستغرب إذا رأيت أحد يضعها كلما كان يريد الإشارة إلى النافذة.


    ملاحظة

    في البرامج الكبيرة التي تحتوي على أكثر من نافذة, يفضل إنشاء كلاس خاص لكل نافذة.
    أي ينصح بإعتماد الطريقة الثانية التي تقضي بوارثة الكلاس JFrame في حال كان البرنامج يحتوي على أكثر من نافذة.

    لماذا لا يتم إغلاق البرنامج عند النقر على زر الخروج بشكل تلقائي؟


    إفتراضياً, زر الخروج الذي تجده في أعلى النافذة لا يقوم بإغلاق البرنامج عند النقر عليه, بل يقوم فقط بإخفاء النافذة المفتوحة.
    في حال أردت أن يتم إغلاق البرنامج كلياً عند النقر على زر الخروج, عليك إستدعاء الدالة setDefaultCloseOperation() كما فعلنا في الأمثلة السابقة.

    سبب جعل البرنامج لا يغلق بشكل تلقائي عند النقر على زر الخروج هو أنك في البرنامج الواحد أحياناً قد تقوم بإظهار أكثر من نافذة في نفس الوقت و لكنك لا تريد عند النقر على زر الخروج الموجود في أي نافذة أن يغلق جميع النوافذ المفتوحة.


    مثال

    لنفترض أنه عندنا برنامج يتألف من نافذة رئيسية و ثلاث نوافذ مخفية.
    هنا كل زر في النافذة الرئيسية يفتح نافذة جديدة عند النقر عليه. فمثلاً عند النقر على الزر Add new book سيفتح نافذة أخرى إلى جانب النافذة الرئيسية كما في الصورة التالية.

    لماذا لا يتم إغلاق البرنامج عند النقر على زر الخروج بشكل تلقائي؟


    بما أن زر الخروج الموجود في النافذة الرئيسية هو الوحيد الذي نريده أن يغلق البرنامج عندما يتم النقر عليه, يجب إستدعاء الدالة setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) لكائن الـ JFrame الذي يمثل النافذة الرئيسية في البرنامج فقط.

    و هكذا عند النقر على زر الخروج الموجود في أي نافذة أخرى سيتم إخفاء النافذة التي تحتوي على الزر فقط و سيظل البرنامج شغّال.

    مفهوم مدير العرض ( Layout Manager )

    فكرة الـ Layout Manager بشكل عام هي تحديد كيف سيتم ترتيب الأشياء التي سيتم إضافتها في النافذة.
    هناك عدة أنواع من الـ Layout Managers التي يمكنك إستخدامها لتحديد أماكن و أحجام الأشياء التي سيتم إضافتها في النافذة بشكل تلقائي.

    كل Layout Manager تم تمثيله بكلاس خاص. ستتعرف على جميع هذه الكلاسات لاحقاً في الدورة.

    الذي عليك معرفته في الوقت الحالي هو أنك في حال لم تقم بتحديد الـ Layout Manager الذي ستستخدمه النافذة, فإنها ستستخدم Layout Manager إسمه BorderLayout.
    لذلك ستجد أن أي شيء تضيفه في النافذة يظهر في وسطها و من الناحية اليسرى ما لم تقم بتحديد الـ Layout Manager للنافذة بنفسك.
    و في حال أضفت أكثر من شيء فيها سيتم وضع الأشياء التي تضيفها فوق بعضها البعض و بالتالي سيظهر فقط آخر شيء أضفته.

    لذلك عليك دائماً تحديد طريقة ترتيب الأشياء التي ستضيفها في النافذة, و هنا يمكنك إما إستخدام أحد الـ Layout Managers أو عدم إستخدام Layout Manager من الأساس و عندها ستضطر إلى تحديد حجم و مكان كل شيء تضيفه في النافذة نفسك.

    مفهوم الحدث (Event)

    كلمة حدث تعني أنه تم التفاعل مع محتوى النافذة بأي شكل من الأشكال.
    فمثلاً: تحريك الفأرة فوق النافذة يعتبر حدث, النقر على أي زر في النافذة يعتبر حدث إلخ..

    كل حدث يمكن أن يحدث عندما يقوم المستخدم بالتفاعل مع النافذة و محتواها له إنترفيس خاص يمثله.
    بهذه الطريقة نستطيع تنفيذ أي أوامر نريد على حسب التفاعل الذي قام به المستخدم.

    ستتعرف أكثر على فكرة الأحداث و أنواعها من خلال التمارين التي ستجدها في الدروس اللاحقة.
    ملاحظة: إذا ألقيت نظرة على قائمة الدروس ستجد أننا وضعنا قسم خاص للأحداث.


    في الدرس التالي ستتعرف على الكلاس Component الذي يعتبر الكلاس الأساسي لأي شيء تم بناءه بواسطة المكتبة Swing.

    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب