بسم الله والحمد لله والصلاة والسلام عليكم طيب يا
بنات اليوم هنكمل في موضوع ال Java Programming و
تحديدًا في graphical user interface وكنا نتكلم على
ال frame وهذا ال code البسيط اللي أنشأنا من خلاله
هأقول إن في عندي frame شأته أحددت default closed
operation أحددت ال size سبعتها أحددت لها ال title
ولازم أعملها visible عشان أقدر أشوفها على الشاشة
لأن ليش إحنا محتاجين نكتب ال code بالشكل هذا لأن ال
Java by default مافيش لها form designer ال Java by
default مافيش لها form designer وبالتالي ال
programmer لازم يكتب ال code بالتفصيل من ال ألف
إلى الياء يعني وإن كانت في ال NetBeans على سبيل
المثال بعض ال versions بتمنحك أو بتسمح لك أن تعمل
ال form editor تقدر تعمل form Virtually يعني تعمل
Drag & Drop مثل لغات البرامج الثانية لكن هذه إضافة
على ال Java لاحقًا مش ال core تبعت ال Java اثنين في
ال Eclipse نفس الكلام موجودة بس في شغل اسمه Window
أو form designer ك plugin بتروح تضيفيها على ال
Eclipse وتبدأ تشتغلي عليها لكن في النهاية أنتِ
مطلوب منكِ تكتبي code بالكامل طيب هذه الشغلات اللي
إحنا شفناها المرة الماضية وكان الناتج العملي
تبعتها عشان نذكرك فيها هي البرنامج وممكن إحنا
نعمله run وهي ال output ال frame بالمواصفات اللي
أنا أضفتها على العنصر اللي موجود عندي هنا عشان
نكمل إن إحنا الآن اتكلمنا على size
size set size وقلنا هي الحجم set size أو width و
height width و height الآن set size بتاخد مني
object من نوع Dimension فممكن
أنا أستغني عن set size وأروح أُحدد أو عفواً أروح
بدل المكتوب اللي هي x و y أروح أعرف Dimension
Dimension دي equal to new Dimension و
ال Dimension هذا بده أُحدد له ضد ال width بدها تساوي
300 وال Dimension ضد ال height يساوي 200 اللي هي
نفس الحجوم اللي موجودة عندي أساسًا
نفس الحجوم اللي موجودة عندي أساسًا وفي داخل ال
frame هان أو في داخل ال set size أروح أستخدم مين ال
D ك Dimension نفس
الحجم لأنه ما تغيرش عندي ولا حاجة بالضبط أنا أخذت
object من ال class Dimension واديته ال size high
اللي هي عفواً ال width وال height واستطعت أعتمد
على ال Dimension ك object في التعامل مع حجم الـ
frame كذلك ال class
ال Dimension نحن الآن بنقول كالتالي ال set size ك
overloading method في منها بتاخد width و height as
integers وفي منها بتاخد Dimension as object فأنا
ممكن بس أعرفكِ على ال object ال Dimension لإنه فيه
object آخر related له اللي هو ال Point اللي شفناها
في ال location كذلك في عندي method اسمها set
location ال
set location هاي إحنا by default قلنا بيظهر عندي
في النقطة 00 بمعنى لو كانت هي ال window تبعتي
أو screen نقطة
القياس الأساسية تبعتي أو ال origin point 00 هيها
وهيك بتتكلمي على X وهيك بتتكلمي على Y X و width أو Y و
height مصبوط؟ لما أنا بتتكلم على ال size اللي
موجود عندي تمام وبالتالي لما أنا رحت وقلت له عرضة
ال frame هذا حددته ما حددتّش على ال location
فمباشرة هو عمل له put على ال point 00 لو أنا بدي
أغير ال location بدي
آجي هنا على سبيل المثال هأقول له JFrame.set
location
في ال location بدي أُحدد النقطة اللي بدي أكون
عليها ها وهذا النقطة X وY وليكن على سبيل المثال
بدي أقول له أنا مثلًا خمسين على ال X ومية
على ال Y overloading method مافيش فيها مشكلة فمهم
أنت كنت بقي argument صح هيرن
لحظة من ظهر ال frame اللي موجود عندي لأن أنا
قلت له نزلّه من فوق مية ومن هنا خمسين وبالتالي أنا
حددت ال point تبعتي هذه النقطة هي النقطة الأساسية
اللي أنا عرضت فيها ال frame الموجودة طبعًا بنفس
الكلام أنا ممكن أنشط Point بدل ما أعتمد على ال X و
ال Y ممكن أنا أعتمد على Point object
Point b == new Point Point Point
.x == 50 Point
.y == 100 وبقى أغير ال argument تبعت ال set
location وأستخدم
بيه وأعمل run هأحصل على نفس النتيجة السؤال اللي
بيطرح نفسه الآن أنا فيه عندي set location set size
set visible مصبوط set title set
size set title set
location set
visible ترتيبهم
مهم؟ هل الترتيب مهم؟ في
ال visible ممكن تكون مهم بدون ذلك آخر حاجة يعني
زميلتكم بتقول لو أنا جبت ال set visible ها
دي هيك همسلها Ctrl X ونقلتها مباشرة بعد تعريف ال
frame بنفعش
أحطها قبل ال frame صح؟ بنفعش أحطها قبل ال frame و
لا لا؟ طبعًا بنفعش لأنه عرفت ال object أنا مية بالمية
هيرن
عارفة ليش؟ لأن الفرق هذه أنتِ قاعدة بتتكلمي على
مجموعة من الخصائص لنفس ال object مجموعة من الخصائص
لنفس ال object وقاعدة بتتغيري عليها يعني الآن هو
already ال object تمّ.. ال object تم إنشاءه ولا لا
من خلال ال method والفرق في ال execution تبعتها
هي بال nano second فأنت مش هتشوفي تأثير الترتيب
اللي عندك هذا ليش؟ لأنه كمان مرة already ال object
constructed تم إنشاؤه وأنتِ قاعدة بتغيري من خلال ال
method هاي أنتِ بتغيري بالخصائص تبعته فقط وبالتالي
ممكن لو صار في عندي delay عالي في لحظة من اللحظات
أشوف ال visible قبل ما أشوف ال title لو صار في عندي
delay عالي جدًا بس الآن إحنا بنتكلم على 4 جيجا
المتتاليات الفرق في الزمن في ال execution تبعتهم
بال nano second مش بال mili حتى وبالتالي إحنا مش
هنقدر نحس بال element أو بالفرق اللي موجود تمام؟
الآن هذا تقريبًا اللي إحنا حكينا عليه الشغل اللي
حكينا عليه المرة الماضية وأضفنا له ال Dimension و
ال Point ال Point مهمة جدًا يا بنات لأن لما أنا
بأجي بحرك ال mouse رأس ال mouse هذا دائمًا يشير إلى
Point وبيعمل return ال listener تبع ال mouse ممكن
يعمل return ل Point وبالتالي أنا ممكن أنا أستفيد
منه يعني الآن تخيلي لما أنت تيجي كنت عندك مجلد و
بتروحي تمسكي element أو folder أو file وبتعملي
Drag & Drop عليه كتب وجد العلاقة بين اثنين ليش
جابوا على الفولدر هذا ولم يجيبوه على الفولدر
المجاور لأن أنت عملتِ over one Point من اللي
بيحتلها المساحة الفولدر هذا فهو افترض أنك أنتِ قاعدة
بِتِضِيفِي على Point ثانية تمام set
size set title getIconImage setIconImage لو
أنت بتحطي Icon لل frame setEnabled عشان يكون متاح
للمستخدمين set location built as overloading method
في عندي method اسمها setBounds لحظة أنا اتكلمت على
size و
location اتكلمت على size و location وزودتها لما
اتكلمت في ال size اتكلمت على Dimension مصبوط و
اتكلمت على Point الآن ال setBounds هي عبارة عن
method بترسم ال frame تبعي أو ال object تبعي و
بتاخد two arguments أو four arguments بتاخد ال
position أو ال location من خلال ال X وال Y two
arguments وبتاخد ال size من خلال ال height وال
width يعني بإمكاني أنا أستغني عن ال set size وال
set location وأكتبها مرة واحدة خلينا نفذها
يعني الآن أنا بدي آجي لل Dimension كل العناصر هذه
set size هأعملها comment و
أروح
أقول JFrame.setBounds x
و y جداش قلنا ال x خمسين
100 ال width 300 وال height 200 لاحظي أنا
استغنيت عن كل ال code السابق باعتمادي على ال
method high وحصلت على نفس النتيجة وبالتالي الأمر
متروك إليك حسب طبيعة الـ code اللي أنت بتشتغليه حسب
الـ application ممكن تستخدمي أي method بدك إياها
ممكن في لحظة من اللحظات تحب تعمل بيه sizing للـ
window للـ frame اللي موجود عندك أثناء الـ run-time
وبالتالي هتدفع إلى الـ set size بعيدا عن الـ set
pound لأنك ممكنش تغير الـ location ممكن تغيري الـ
size فقط
set resizable أتحكم بالـ size هل هو أعمل extension
ولا لأ أثناء الـ runtime وset extended state هذه
الـ method بتحدد شوه طبيعة الـ window أو الـ frame
أول ما يشتغل احنا متفقين أن الـ frame له title bar
و الـ title bar عليه أربع تلت مفاتيح رئيسية الـ
clause maximize و restore و ال minimize مظبوط؟
title
الآن الـ frame.normal هو الوضع التلقائي حسب الحجم
و الـ location اللي انت حددته لكن لو أنا قلتله للـ
frame set extended side state و روحت قلتله frame
maximized horizontal horizontal أفقي يعني احتل عرض
الشاشة بالكامل و حافظ على الارتفاع اللي أنا حددته
إذا أنا قلتله maximize both وكأني اضغط على المفتاح
هذا عشان يحتل الشاشة عملته Maximize iconified أنه
يعني عمله run لكنه مايظهرش الـ frame لكنه بيظهر في
الـ taskbar وشريط المهام اللي موجود عندي خلينا
نجربها على السريع ونكمل لو أنا اجيت هان وروحت وقلت
له jframe.setExtendedState
و JFrame Dot Maximized
مثلا Horizontal لحالها هيرن Okay إيش لسه أنا عندها
Maximize
Horizontal صح Okay
both غالبا الـ set bound هى هى maximize طيب
iconified ليش الـ horizontal مش تغلقتش؟
Anyway يمكن يكون هناك شيء مش قادر أستوعبه ليش مش
قادر يعمل maximise horizontal و vertical لكن الأن
لو أنا قلتله iconified هيشتغل
و يبين معايا وين فقط على الـ taskbarيعني لأن الـ
application شغال الـ frame مش موجود قدامي لكن لو
أطلعت على الـ taskbar الـ frame موجود و كأني عمله
minimize فممكن أنا أسترجعه و كأني ضغطت على المفتاح
الـ icon طيب ننتقل
لشغلة مهمة في محاضرتنا اليوم اللي هي الموضوع
layout manager والتعامل مع العناصر قبل ما اروح في
مقابل الـ set method في عندي مجموعة من الـ method is
visible is enabled get location عشان تشتغل عكس او
تفحص حالة الـ element في المرة او الـ object الـ
frame حسب الخصائص السابقاتوبالتالي أنا قاعد بتكلم
على frame كأساس window وبدي أعرض عليها العناصر أو
بدي أقسم عليها لـ graphical user interface element
هو أساساً مصمم يحتوي الـ menu bar و الـ user
interface element وعملية إضافة الـ element على
البنء الهادي أو على الـ frame من خلال الـ method
اللي اسمها add خلال الـ method اللي اسمها add يعني
الآن الـ J frame اللي أنا عرفته في المثال تبعنالو
أريد أن أضيف شيء سأقول له .add و هنا يجب أن أقول
له أعطيه UI object حسب ما هو الـ UI object اللي
أريد أن أضيفه في النهاية لو أنا كلمت هل الـ JFrame
هو عبارة عن panel عبارة عن panel أنا بدي أرسم
عليها العناصر اللي موجودة عندها كذلك في من الـ
panel في عندي الـ class JPanel
وإذا بتذكري لما المرة الماضية اتكلمنا على العلاقة
ما بين الـ elements بشكل سريع نرجع لها الرسمة هيها
قولت أنا في الـ internal structure للجافة للـ
graphical user interface بالجافة أنا فيه عندي two
containers الـ frame اللي هي الـ top level window
والتانية فيه عندي الـ panel و بعدين بالعلاقة بقدر
أضيف عليهم الـ button أو باج الـ element وممكن أنا
أضيفهم مباشرة علوينعلى الـ frame وممكن اضيفهم
مباشرة على الـ frame لكن اضافتهم المباشرة على الـ
frame بتحتمل مخاطر خصوصا عند الـ update للـ
application اللي موجود عندي تمام الآن الباني لهذه
كـ container service مستخدم للرسم و في نفس الوقت
container فاستخدامها هيكون كبير مفيد بالنسبة ليه؟
لا حقا طيب الآن
لو أنا اجيت على الـ application او المثال اللي احنا
شغلناه ايه بدي اعملها دي command و
بدي اجي بدي اروح على الـ j frame اللي عندي و اضغط
add new
j button و الـ button هذا
button1 بدي أسميه إيش الصدرة بالكودة هنا سوا أنا
عامالي بقى أضيف الـ new J button as UI object على
مين؟ على الـ frame اللي موجود عندي على الـ frame
اللي موجود عندي حيران اتغير الـ frame بالكاملوصار
هو كله .. كله button ايش اللي صار؟ طب ليش الـ
button هيك صار حجمه؟ عشان أنا ماتكلمتش عن حجم بتبع
الـ button؟ okay هاي بده اطلع الـ button من هان
خليني .. هاي control X و بده اسمي بي وهي J button
بي بده تساوي
والـ B.set size ده يقول له الـ width يكون مثلا
خمسين و الـ height يكون تلاتين كويس هيك؟ و هيضهر
في نفس الصورة، نفس الشكل عشان الـ new object؟ لأ،
بعد كده بقولك ليش أنا بما أن الـ Java أساسا مافيش
فيها form designer راحت اتكرت بعض الشغلات اللي
ممكن تساهم في تسهيل الـ design الشغلة سمتها layout
manager إيش هو الـ layout؟ بقولنا هو المخطط layout
المخطط الرسم تبعتنا هذه و بالـ layout manager بالـ
Java الـ default تمام؟ نتكلم على مجموعة .. الـ
manager بحدد الـ position و الـ size تبعة الـ
graphical user interface لاحظي بحدد الـ position و
الـ size يعني انت بتعملي add و الـ layout manager
هو اللي بحدد الحجم المناسب و الـ position حسب ما هو
بيرتقي طيب في الحالة اللي احنا موجودين فيها الـ J
frame ضمن شغلة او الـ default layout manager اسمه
border-layout border
-layout الـ
border-layout أو هذه الـ layout التلاتة في عندنا
تلاتة layout بشكل عام flow و border و grid هذه الـ
default تبع الجي فريم
default for jframe الفكرة فيها لما بدي بتكلم على
الـ flow layout أن العناصر بدها تظهر تباعا على الـ
frame أو على الـ panel اللي عندي as line كأسطر
بتمشي بشكل أفقي لما بينتهي السطر أو لما ببطل في
عندي وسع ياخد new object بكمل في السطر اللي بعده الـ
border layout بيجسم الشاشة لخمس مناطق North
South East و West و Center لما بكي تضيفي على الـ
border layout by default الـ add بيكون في الـ
center ومش
بس هيك الـ border layout بيعمل stretch للـ object
بيغير الحجم تبعه بحيث إنه يعمل occupied لكل الـ
area طب يا أستاذ احنا اضافناها أنا عملنا له add هو
border layout و أنا اضاف اضاف على الـ center طب ليش
احتل المنطقة بالكامل احتل الـ frame بالكامل لأن الـ
center له الأولوية طالما العناصر التانية empty الـ
location التانية is empty في الـ grid بروح بجسم ليه
لإيش لشبكة مجموعة من الصفوف والأعمدة وبتم
إضافة العناصر عليها كذلك تباعا كذلك تباعا يعني
الآن أنا في عندي flow layout
flow border and grid في الـ flow بتتكلم as lines
حسب
أحجام الـ element بيضل
يضيف ليه إيش يا أستاذ؟ أنت عملك بتقولنا أن الـ
system هو اللي بتحكم بالحجم وقاعد يقول حسب الأحجام
يعني السطر ممكن يكون فيه أربع مفاتيح وسطر ثاني
يكون فيه تلاتة؟ أه ممكن وهلأ جت بقولك ليش؟ الآن
العناصر اللي أنت بدك تضيفيها ممكن تتحدديلها الحجم
غير هيك بعضها هيكون عليه label وبناء على الـ label
اللي بيظهر كل الـ label اللي موجود وبالتالي هتختلف
الأمور خلينا نشتغل واحدة واحدة من ناحية عملي أو
في الأول نشوف الـ flow layout الكلام عشان الكلام
اللي احنا بيقوله كله مكتوب flow layout manager
lines و horizontally بتوزع الـ element اللي موجود
لما مابيضلش في الوسط أنا بروح على السطر اللي بعده
من ناحية code لما أنا بدي أغير ال element اللي
عندي أو العناصر اللي عندي as a flow layout الفيلم
المفروض يشتغل في الـ default في ال border في الأول
عشان أخلص منه وبعدين بقى أروح لل flow طيب الآن
احنا بنقول by default by default في ال border لأ
في ال .. مع ال frame ال border layout is ال layout
manager وبالتالي ال element اللي أنا أضفته هان
البطون اللي أنا أنشأته هذا انضف وين؟ انضف على ال
center لو أنا بدي أضيفه في ال north باخد coma و
بقوله border layout border
layout .add(north) نورث وبهيك أنا قاعد بقوله
ال element هذا ماتضيفليش إياه على ال center
ماتضيفليه أين؟ على ال north في المنطقة هذه هي
run هتلاحظ انه فعليا ضاف وين على ال north واحتل ال
north بالكامل لو أنا بدي أغير ال direction و أحطه
في ال east على سبيل المثال run
احتل ال east بالكامل بناء على لحظة انه بجربش على
منطقة ال center مطلقاليش؟ لأن الـ Center هو الأساس
وبالتالي هو الـ override location اللي أنا موجود
عنده في عندي مشكلة تانية مع ال grid layout أو عفوا
مع ال border layout أنه لو أنا ضفت أكثر من عنصر
على نفس المنطقة تظهر as stack وبالتالي هشوف آخر
واحد يعني لو أنا الآن أخدت ال statement هاي و بدي
أكررها كمان مرة
as if okay وروحت
هنا بتقول له new JButton() و ال label تبعه بتقول له
button2
الأول
هي و هنا أضافت button تاني run
إيش هذا؟ إيش اللي صار هذا؟ East؟ نعم؟ لأ و بعدين
هذا مش من ..
أنا روحت أنشأة object من نفس الكيفية السابقة الحجم
اللي قلناه مالهوش داخل okay
هو already borderly out بيتنين جيه
بوتون بيتنين بدها تساوي
يعني هو راح أنشأ button لأ باسم الصح الأصل المباشر
ليكن أنا حاولت أنشئ anonymous ب object من ال
button بحيث أنه .. الآن وين button واحد؟ تحت
button اتنين ففي مجال أصله اللي أعمل من خلال code
لbutton واحد hide invisible set visible false عشان
يبين عندي وبالتالي هذه مشكلة العناصر هتصير فيها
عندي as a stack وانا بشوف اخر element من العناصر
اللي موجودة عندي هن طيب الان لو انا بدي اغير ال
border layout ال other layout هروح على ال JFrame
.setLayout() وبدي احددله layout manager هروح
اقول له أنا new FlowLayout() إيه صار عندي الآن؟ صار
عندي flow صار الآن ال layout manager تبعت ال frame
بعد ما كانت border صارت flow كم مفتاح ضايف عليها
أنا؟ اتنين لاحظ في البداية ماتدانيش خطأ على ال add
على الرغم أن أنا محدد east محدد ال location مدنيش
خطأ عليها السبب ان الاد تم تعريفها as overloading
method ممكن تاخد ال location .. تاخد ال position
لو كان ال default او ال layout manager اللي عندك
border layout لو ماكنش موجود بتشتغل على ال
argument الأول اللي بدها تضيفه تمام تعالى نشوف هنا
high run راح اضاف ل button 1 و button 2 في السطر
الأول و اعمل لهم alignment في الوسط لو انت بتغيري
اول حاجة ال alignment تخليه اليامين او اليسار
مباشرة من خلال ال constructor تابعت ال layout
manager new FlowLayout() هيه بروح مباشرة بقوله flow
layout .left ولا right ولا center left على سبيل
المثال وبهيك أنا بكون شغالة او حصلت على أو قدرت
أتحكم في ال alignment المحاذاة تبع السطر في الـ
flow layout لكن لاحظي الـ two buttons اللي هم نفس
الحجم اللي هم نفس الحجم الآن بقدر أروح عليه السريع
أضيف
مجموعة من ال elements مجموعة من ال buttons لل
frame اللي عندي JFrame.add
و أنا بدي اسميه تلاتة فقط اوكي
بدنا كومها بدنا ghost و
هي control C هان
اربعة يعني خمسة ستة كم بطل أنا بضيف ضفت سبع .. سبع
buttons على الشاشة، هيهم لاحظي،
button 1 و button 2 أحجامهم مختلفة تماما عن باقي
الأحجام العناصر التانية لأنه .. لأنه .. خليكي
معايا يا أستاذ، سيبيكي من .. ال label اللي موجود
على ال button تحكم بال size تعالي لو أتيت هنا
للحظة وهي عملت ضغط على ال button الأول ال border
selection أو الـ selection rectangle اللي على
البطن انتهى أو بدايته مع حرف ال بي و نهايته مع
الواحد و ال space هذا هيه هذا
ال space يساوي هذا و لو أجيت هنا نفس ال space يعني
بين جثين ال label صار هو اللي بتحكم في حجم ال
button اللي موجود عندي في حجم ال object اللي ممكن
يكون موجود عندي طب لو غير لو اتحكم لو قلتله انا ال
button هذا حجمه كده هل ممكن يأثر يعني اجي مثلا ل
button 2 هان أقوله .setSize() أو button 1 عفوا
.setSize() العرض تبعه يكون مثلا 200 او 100
كما وهي الارتفاع عشرين الخطأ
ليس من الـ two semicolon بالمناسبة الخطأ هنا من ال
constructor عند ال constructor بيقول إيش ال type
mismatched, could not convert أنا بورجيكوا أن
الخطأ ليس من ال two semicolon control X هي B .
control V
بس ماشي .. المفروض .. okay أنا ويه الخطأ مستحيل
يكون في ال two semicolon يعني ليش؟ ليش؟ و بياخد
واحدة semicolon بالنسبة إلى الجافة أو للغات
البرمجة هي عبارة عن حالة أو نهاية الجملة يعني أنا
بقول له أنها انتهيت إيش معنى الجملة السابقة الآن
هسه من السيمي كولون فراح فحص الجملة هذه أمورها
تمام وراها سيمي كولون يعني إمتى statement بيعملها
ignore و بيعمل move لل next element طيب الآن غيرت
الحجم هي run تغير حجم بطولة واحد ولا إشي كما هو
وبالتالي ال control لل size و ال position لمن؟ لل
layout manager مشكلة ال flow layout الآن لو أنا
أجيت هنا و غيرت الحجم إيه صار؟ هيعيد ترتيب ال
objects أو ال GUI object داخل ال panel اللي عندي
هي كلهم صاروا على نفس الصدر هاي واحد اتنين وبالتالي
إذا أنت بدك تروح باتجاه ال flow layout وتحافظ على
ال interface بنفس الترتيب setResizable() فالس كمان
لأ
لأ احنا متحكمنا فيه هيه by
default كل frame او كل panel بتجي ب layout by
default ال Jframe بشتغل border ال panel هتستخدم
flow by default لكن هذا لا يعني ان أنا ماقدرش
أغيره بغيره من خلال new setLayout() هاي ال method
عشان أتأكد منها مرة تانية على الـ frame أو الـ
panel اللي عندي .setLayout() الميثود موجودة و
بديها object من ال layout المطلوب فأنا بعمل
override ال layout اللي أنا بدي استخدمه طيب، لاحظ
ان ال add عملية sequential الallow في ال execution
لو أنا فكرت ان button 5 بدي يظهر قبل button 4 ايش
ممكن أسوي؟ بس بدي أنجله في ال code قبل هل في مجال
أتحكم فيه لاحقا بعد هيك يعني بعد ما هو ظهر لأ يعني
إذا أنا بس بدي خمسة ييجي قبل أربعة الحل الوحيد أنه
أروح أعيد ترتيب إضافتهم على ال frame لأن عملية
الإضافة sequential و تبع انقلها بتحكم عملية الظهور
بالنسبة للـ grid layout ال grid layout بروح بجسم
الشاشة اللي عندي أو ال frame اللي عندي أو ال panel
اللي عندي لأ مجموعة من الصفوف والأعمدة مجموعة من
الصفوف والأعمدة يعني الآن أنا ممكن أروح أقوله بدل
ما كنت بقوله new FlowLayout() new
GridLayout() ولمّا أقول له GridLayout() يقول لي عدد
صفوف و عدد أعمدة عدد صفوف و عدد أعمدة ليكن أنا بدي
أقول عدد الصفوف أربعة و عدد الصفوف تلاتة و تلاتة
مثلا هي
تلاتة و تلاتة معناته أنا قاعد بقول هنا إن ال frame
تبعي هذا بدي يحتوي فقط تسع عناصر، مصبوط؟ run
ماذا تستنبط من الرسم اللي موجود عندي هان؟ انه ما
زالت عملية الإضافة في الـ Grid Flow Sequential
وبدأ فيها صف صف مثل مثل ال Flow لكن بطل يقول أنا
خلص ال space اللي عندي خلصت الخلايا أخد أول تلاتة
حطهم في الصف الأول التلاتة اللي بعدهم في الصف
التاني و العنصر السابع بقى فيه هان طيب لو أنا بدأ
أروح أضيف كمان أنا عندي موسيقى على 2 صح؟ بدي أروح
أضيف كمان تلاتة، أيش بتتوجع يساوي؟
أيوة،
أنا لسه ما شغلتش، بدي أسكر بس أسكر مجموعة المفاتيح
اللي كنت شغلها هنا أيوة،
أيش بتقولي؟ هأضيف صف جديد؟
أنا محدد عدد الصفوف، إيش ممكن يساوي؟ إيش يكون ال
action؟ إيش بتشوف ال action المنطقي اللي ممكن
يصير؟ حيضيف
العناصر والباقية ال buttons اللي أنا أضفتها وما
حقنشها، غيره؟ طيب بال word لما بتكون تكتبي و تضغطي
tab كنت انشأتي جدول و حطيتيه أربع صفوف و تلت أعمد
أو عملتي tab, tab, tab إيش بيساوي؟ بيضيف صفة جديدة
لوحده و هياخد كل الـ element اللي موجودة عندك هذا
بال word، تمام؟ هيك اللي هيصير، طب عندي هان راح
ضاف لي كمان column يعني أصبح عنده عدد الصفوف ثابت
و مدون ذلك جالك أنا ممكن أتحكم في إيش؟ في عدد
الأعمدة يعني أعمل extension لل raw في ال grid اللي
عندى بحيث أني أصغرها لكن عدد الصفوف ماتغيرش عليه
ولا حاجة طيب، بهك بنكون خلصنا موضوع ال layout
للتلاتة و بنشوف لاحقا إن شاء الله كيف ممكن أنا
أتغلب أو ألغي موضوع ال layout بالكامل ألغي موضوع
ال layout بالكامل لأنه بديني أحيانا حرية أكثر في
التعامل مع ال elements لكن لما أنا بدي ألغي ال
layout بدي أصير كل element أحددله حجم و location
كل element بتصير أحددله حجم و location وهنا بتبرز
أهمية ال set bound method بنشوفها لاحقا إن شاء الله
تعالى في أي سؤال يا بنات؟ لأنه افترض إن عدد الصفوف
ثابت قدم عدد الصفوف على عدد الأعمدة وانت الآن
بتضيفي عناصر أكتر من حجم ال grid الحل؟ راح أضافلي
وين؟ صفة جديدة السؤال الأخير لو أنا غيرت حجم ال
window هنا إيش اللي بتغير؟
حجم العمود فقط فقط حجم العمود الله يعطيكم العافية