عرض مشاركة واحدة
منتديات طلاب وطالبات جامعة الملك عبد العزيز منتديات طلاب وطالبات جامعة الملك عبد العزيز
قديم 07-08-2011, 01:54 AM   #13

SPIDER

جامعي

الصورة الرمزية SPIDER

 
تاريخ التسجيل: Aug 2008
التخصص: Computer Engineering
نوع الدراسة: إنتظام
المستوى: متخرج
الجنس: ذكر
المشاركات: 939
Skaau.com (11) رد: Ee364 ADVANCED PROGRAMMING شرح كآمل ومفصل وبالاكوآد

الله يعطيك العافية أخوي most_uniQue، اسمح لي أشرح الكود الأول بتفصيل أكثر


كود:
import javax.swing.JFrame;
public class MyFrame
{
    public static void main(String[] args)
    {
        JFrame frame = new JFrame("The Title");
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
الآن نشرح الكود سطر سطر ...

==========================

كود:
import javax.swing.JFrame;
import هنا تُستخدم لاستدعاء كلاسات (class) جاهزة لاستخدامها (في مثالنا هذا نستخدم الكلاس الجاهز JFrame)، طبعاً الـ package اللي اسمه javax.swing به العديد من الكلاسات الخاصة بالـ GUI اللي هي النوافذ ومكوناتها
طبعاً إذا راح نستخدم أكثر من كلاس من نفس الباكج نقدر نستبدل اسم الكلاس بعلامة النجمة *

كود:
import javax.swing.*;
وبهذا ممكن نستخدم أي كلاس بداخل هذا الباكج. فيه طريقة أخرى ممكن نستخدمها بدون استخدام import وهي استخدام الاسم الكامل للكلاس (الباكج.الكلاس)، يعني بدلاً من السطر التالي:

كود:
JFrame frame = new JFrame("The Title");
نستخدم التالي:

كود:
javax.swing.JFrame frame = javax.swing.new JFrame("The Title");
وبالتالي نستغني عن الأمر import بداية الكلاس

==========================

كود:
public class MyFrame
{
}
هذه طريقة تعريف الكلاس، وتكون عادةً بعد أمر الـ import. طبعاً MyFrame هو اسم للكلاس الذي نقوم بإنشائه. هنالك طريقة لتعريف الكلاس ولكن الطريقة الأولى أفضل:

كود:
class MyFrame
{
}
==========================


كود:
public static void main(String[] args)
{
}
هذا هو الـ main، وصيغة كتابة هذا الميثود method تعتبر standard (ثابتة في كل البرامج). طبعاً عند تشغيل أي برنامج جافا، ما سيقوم بتنفيذه البرنامج (The compiler) هو ما بداخل الـ main فقط.

==========================

كود:
JFrame frame = new JFrame("The Title");
هذا السطر في الأساس عبارة عن سطرين:

كود:
JFrame frame;
frame = new JFrame("The Title");

السطر الأول هو إنشاء كائن object من النوع JFrame وتسمية هذا الـ object بالاسم frame (طبعاً الاسم اختياري)

في البداية سيكون frame مجرد object ولم يتم تعريفه بعد، وفي لغة الجافا القيمة الافتراضية لأي object قبل التعريف هي null (أي لا شيء)

السطر الثاني هو تعريف للكائن frame وجعله من النوع JFrame (ستعرفون لاحقاً بأنه يمكن إنشاء كائن من نوع معين وتعريفه على أنه نوع آخر)

الكلمة new تستخدم لتعريف الـ objects وتلي هذه الكلمة دائماً الـ constructors (الميثود الرئيسية في كل كلاس). طبعاً هنالك أربعة constructors في الكلاس JFrame طبقاً لمستندات الجافا java documents:

http://download.oracle.com/javase/1....ng/JFrame.html

أهم constructors تفيدنا هنا هي:

كود:
JFrame();
JFrame(String title);
الأولى لا تأخذ أي parameters وهي لتعريف الـ object على أنه JFrame بدون أي مواصفات
الثانية تأخذ parameter واحد فقط من نوع String وهو للعنوان، وهي لتعريف الـ object على أنه JFrame ويكون العنوان title

طبعاً في مثالنا هذا، استخدمنا الثانية

==========================

كود:
frame.setSize(400, 300);
setSize (هي أحد الميثود المتوارثة من كلاس الـ java.awt.Component ولكن بما أن الكلاس JFrame يرث الكلاس Component لذا يمكن استخدام كل الميثود الخاصة بالـ Component في الكائن الذي من نوع JFrame، طبعاً ستفهمون هذا الشيء لاحقاً في درس الوراثة Inheritence) وتأخذ 2 parameters وكلاهما من نوع int

كود:
setSize(int width, int height)
وهذا الميثود هو لتغير مقاس الـ Component بصفة عامة والـ JFrame في مثالنا هذا. طبعاً مقاس الـ JFrame بدايةً يكون 0,0 ولن ترى إلى شريط العنوان فقط

==========================


كود:
frame.setLocationRelativeTo(null);
هذا الميثود (متوارث من java.awt.Window) خاص بتحريك الـ JFrame إلى مكان محدد على الشاشة. هذا الميثود يأخذ parameter واحد فقط وهو من نوع Component، طبعاً من ضمن الـ Component هو الـ JFrame و JPanel و JOptionPane وغيرها، بحيث إذا مرّرت component معين كـ parameter لهذا الميثود، سيكون موقع الـ JFrame في منتصف هذا الـ component. ربما لا تفهمون فائدة هذا الميثود حالياً، لذلك أفضل ما نقوم به الآن هو تمرير قيمة null كـ parameter لهذا الميثود وسيكون موقع الـ JFrame بمنتصف الشاشة.

طبعاً هذا الميثود اختياري وليس شرطاً استخدامه، وعند عدم استخدامه يكون موقع الـ JFrame بالركن الأيسر في أعلى الشاشة.

==========================

كود:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
هذا الميثود يقوم بتعريف العملية التي ستتم عند الضغط على زر الإغلاق X الموجود بالركن الأيمن في أعلى الـ JFrame. طبعاً هذا الميثود يأخذ parameter واحد فقط وهو من نوع int، وهناك أربع أنواع من العمليات لهذا الميثود:

JFrame.DO_NOTHING_ON_CLOSE: أي لا تفعل شيء عند الضغط على زر الإغلاق
JFrame.HIDE_ON_CLOSE: أي إخفاء الـ JFrame عند الضغط على زر الإغلاق
JFrame.DISPOSE_ON_CLOSE: أي إخفاء وإنهاء الـ JFrame عند الضغط على زر الإغلاق
JFrame.EXIT_ON_CLOSE: أي إغلاق البرنامج كاملاً عن الضغط على زر الإغلاق

طبعاً الخيار الأخير هو المُستخدم غالباً. معلومة بسيطة أريد أن أقولها هنا:

JFrame.DO_NOTHING_ON_CLOSE: هي عبارة عن int قيمته 0
JFrame.HIDE_ON_CLOSE: هي عبارة عن int قيمته 1
JFrame.DISPOSE_ON_CLOSE: هي عبارة عن int قيمته 2
JFrame.EXIT_ON_CLOSE: هي عبارة عن int قيمته 3

أي يمكن استبدال الكلمة الطويلة بالرقم عند تمريره كـ parameter لهذا الميثود

==========================

كود:
frame.setVisible(true);
هذا الميثود هو لإظهار الـ JFrame على الشاشة. طبعاً هذا الميثود يأخذ boolean كـ parameter، إذا كانت القيمة true سيظهر الـ JFrame على الشاشة، وإذا كانت القيمة false سيختفي الـ JFrame إذا كان ظاهراً على الشاشة

طبعاً الـ JFrame لن يكون ظاهراً في البداية، لذلك هذا الميثود ضروري لإظهار الـ JFrame على الشاشة

==========================

أتمنى بأن يكون الشرح واضحاً ووافياً، وأي سؤال أنا حاضر


بالتوفيق :)

 

توقيع SPIDER  

 

سبحان الله وبحمده .. سبحان الله العظيم

[من برمجتي] ODUS Auto-Adder v1.1 + الكود المصدري

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

 


التعديل الأخير تم بواسطة SPIDER ; 07-08-2011 الساعة 04:23 AM.
SPIDER غير متواجد حالياً   رد مع اقتباس