بسم الله والحمد لله والصلاة والسلام على رسول الله
كنا يا بنات المحاضرة الماضية تحدثنا عن الـ menus و
اليوم إن شاء الله هنحاول نعمل تطبيق عملي على الـ
menu بشكل عام عشان نفرق بين الـ menu و الـ pop-up
menu ونشوف كيف ممكن أنا أتعامل معاهم بشكل كويس
ياريت تحاولي تركز معي في الـ code اللي أنا بكتبه
بشكل مبسط بدأت أنا عملت Class جديد اسمه menu
test Class وبس عملت عليه frame وعرضه 700 وحجمه
500 وعملته visible هأبدأ مع الـ menu bar ف أنا هأروح
أنشئ menu bar Jmenu bar و
بدي أسميه على سبيل المثال الـ bar bar ده تساوي
menu bar Jmenu bar
والـ constructor ليس بحاجة لأي Parameter في الوضع
الأول هذا الـ menu bar يجب أن يُضاف على مين؟ على الـ
frame من خلال Jframe.setmenubar
set Jmenubar واسم الـ menu bar object اللي موجود
عندي الأقل لو أنا عرضت الـ frame هذا أو شغلته لاحظي
أن الـ menu bar مش موجود أن الـ menu bar مش موجود
ليش؟ لأنه عشان يظهر لازم يكون عليه Element لازم
يكون عليه Element تمام وبالتالي
الـ elements اللي قلنا هتكون على الـ menu bar أما
هتكون J menu
وهذه اللي حابين جوسين نسميها الـ sub menu على سبيل
المثال أنا بدي أعرف الـ file بس
خليني أغير اسم الـ F menu هذه وبدي أعمل كمان واحدة
نسميها الـ edit
edit menu edit
new
الآن
هذول اللي بدي أضيفهم على مين؟ على الـ menu bar والـ
sequence اللي بتضيفيه هو اللي هيظهر، تمام؟ يعني
أنا هأروح أقول له الـ bar.add الـ menu اللي عندي هي الـ
file والـ bar.add الـ E menu اللي موجودة عندي هم
هيك لو أنا شغلت هأشوفهم وهأشوف الـ menu bar وهي الـ
file وهي الـ edit موجودات لكن هدول مافيش وراهم
Action لأنهم عبارة عن Menus الـ Action بيكون ورا الـ
menu item تمام في داخل الـ file في داخل الـ file menu
اللي عندي بدي أروح أعرف .. بدي أشتغل كالتالي بدي
أعرف Jmenuitem على
سبيل المثال بدي أسميه open و
الـ text تبعه open
وبدي أضيف Separator تمام؟
الـ open هيبدأ يعمل أيضا Object جديد Menu Menu item
exit على سبيل المثال لأن أنا بدي أشتغل على الـ code
تبع الـ exit A new J menu item والـ text تبعها
هيكون exit خروج تمام
على الـ file menu F menu.add هأروح أقول له الـ open
طيب يا ريت اللي بتحكي تسكت والـ F menu.add
Separator عشان أشوف الـ Separator والـ F menu.
add الـ Object اللي عندي اللي هو exit
تمام الآن هي run هذه الـ file صار فيه الـ open وصار
فيه الـ exit زي ما أنتي شايفة جدا على الشاشة والـ
Separator واضح موجودة عادة أنا زي ما قلنا بنستخدم
الـ Separator عشان أشكل Groups من الـ element يعني
open وnew وopen وsave وsave as هدول هو أنا
Group print وprint setup هي Group ثانية وفي
الأخير إيش بحط exit لما بأجي على الـ edit لما بأجي
على الـ edit بعمل copy وcut وباست as one Group و
مثلا الـ Separator بحقه الـ Format حسب حاجتنا تمام؟
وبالتالي أنا صار في عندي هي الـ menu بساطتها وبديش
أروح بتفاصيل أكثر طيب الآن أنا بدي أعمل Code خلف
الـ exit عشان ما ننساش قلنا الآن في تشغيل البرنامج
مع الـ nominate characters لحظة أن أنا بضغط حرف الـ
L بضغط الـ key الـ L key بيصير في شيء عندي هنا؟ لأ
ليش؟ لأنه لو ما حددتش nominate ما حددتش من الـ
character لمن؟ لالف اي لو أنا أجيت وقلت له single
character اف إيش من هنا remove الـ argument مع الـ
open بنضيفها
بشكل مستقل مافي مشكلة في الموضوع وهي f open
هنا هي الـ a وهي هنابدي أقول له nominate character
الـ E وبالنسبة للـ file هأروح أقول له الـ F menu في
عندي الـ method اسمها .set nominate تشوفي أحيانا
الشغلات اللي ما بتيجي معك بشكل مباشر بدك تروحي
تشوفي الـ alternative ways عشان تحليها وتشتغلي
معها هي الـ E كذلك الـ exit إحنا عملنا الـ exit
خلصنا هي الـ edit الـ E menu.set nominic وهي
كمان الـ E المعنية اللي بدي أحطها هذه X مافي مشكلة
عشان
ما أتخربطي قلنا الـ nominic هو عبارة عن الـ
character اللي بدنا نعمله underscore تمام أو
underline عفوا لما أنا أضغط على مفتاح الـ Alt تعالي
نشغل الـ application هي رحلة مباشرة عشان الـ main
menu Alt F فتح القائمة Alt E راح تضغطي على الـ E Alt
F X راح تضغطي على الـ element X وعمل press هذا ليس
الـ accelerator الـ accelerator اللي هو شغل ثاني لما
أنا بدق الـ control بشكل مفتاح بشكل سريع على سبيل
المثال هاي الـ exit exit.setaccelerator بتأخذ
Keystroke Keystroke Object Keystroke
.getKeystroke شوفي لي إيش المفتاح اللي بدي
اضغط عشان تدّي يكون هذا الـ accelerator اللي موجود
عندي هنا جئنا أنا في عندي Key Event Key
Event.VK_X كما وفي عندي Input Event
Input Event Input Event.
Control Mask أو الـ Alt Mask خلّيني نشغل مع الـ
Control Mask هيك صارت .. أنا قاعد بقول له لما أنا
بأضغط على الـ Ctrl X روح نفذ لمين؟ الـ Exit Menu
Item اللي في الـ Menu اللي عندي عشان هيك ضروري
تنتبهي لما بدك تعتمدي على الـ Accelerators لازم
تعتمدي على Unique character لكل Element اللي
بدكياه هل ضروري يكون في عندي Accelerator لكل الـ
Menu؟ لأ أنا بحط Accelerator للعناصر اللي أنا
محتاجها باستمرار الآن لو أنا جالي أتشغلت هي الـ
menu لاحظي هي اللي جالي هي الـ accelerator تبعتها
Ctrl X يعني بين جثتين لو أنا ضغط Ctrl X على الـ
keyboard فعليا هو راح يفتح الـ menu وراح على الـ exit
طيب تمام لحد الآن إحنا بدون Action لحد اللحظة بدون
Action الـ Action بده يشغل مع الـ menu أو مع الـ item
اللي اسمه exit
شفت end الـ
exit.add قلنا الطريقة الأولى أتعامل مع Action
Listener هذه new Action Listener وراح يجيني هالـ
Action Perform Method اللي أنا بدي أشتغل في داخلها
إيش بدي أكتب Code إذا أنا بدي أعمل exit الأمر بسيط
System.exitوهي Zero عشان يعمل Intermediate
Close بس هل الكلام هذا صح؟ هيو بس تعالي نجرب هي
بتشتغل صح هي file هي exit الـ System هي file هي
شغلت مرة ثانية هي Control X على الـ keyboard وعمل
exit وبالتالي Accelerator تبعتي شغالة بدون أي
مشاكل بس المنطق بيقول أنه لما أنا أجي أعمل exit
أسأله أسأله هل تريد خروج من البرنامج حسب إيش أنا
بدي أسأله في الآخر الـ Java لما بتعرض لي البيانات
أو بتعرض الـ data في عندي الـ dialogue options اللي
هي J option pane J option pane والـ dialogue اللي
موجود عندي أنا كم نوع؟ أربعة أنواع والـ dialogue
اللي عندي أنا أربعة أنواع Show Message Dialogue عشان
أنا أعرض رسالة للـ user عشان أنا أعرض رسالة للـ
user والرسالة هذه الـ user بده يقرأها وفقط مافيش
interaction وراها الـ Action يا إما بيستكر نص
الرسالة إما بالـ exit button اللي موجود فوق أو على
المفتاح اللي ظاهر عليها وغالبا الرسالة بتكون
عليها one button عشان تعمل exit لها Confirm
Dialogue لما أنا بدي أسأل الـ user عن رأيه أكدني
العملية اللي بيحصل الـ save الـ exit إلى آخره لما
بدي .. بدي يكون في عندي خيارات أكثر يعني أنا بدي
أتكلم على مين؟ على Option do you want to save data
before exit؟ هل تريد حفظ التغييرات قبل الخروج؟
صارت Option مش بس Yes وNo صارت Okay وNo أو Yes و
No وCancel Yes يعني خزن وExit No, exit without
Save مظبوط وCancel خلاص خليك زي ما أنت ألغى
عملية الـ exit اللي موجودة عندي هم والنوع الثالث
اللي هي show in the bot dialogue show in the bot dialogue
و الـ dialogues هاي طبعا هي الرسائل اللي موجودة فيه
عندي نص الرسالة لازم أنتبهله و الـ icon اللي بدأ
أنا أستخدمها حسب إيش أنا .. لحظة أنا في رسائل في
عندي error message information message warning
message و question والـ plain message اللي موجودة
أنا مش هروح في تفاصيل فيهم كتير هتركلك المجال
تقرايهم من الـ slides لإن أمرهم بسيط لكن هوريك
الآن من خلال الـ عملية كيف نتعامل معاهم الآن أنا
بتروح أسأل إيش النوع الـ dialogue اللي بدي أعرضه
confirm dialogue مصبوط هروح أقول أستدعي الـ
option بين JavaX.swing.show confirmdialogue show
confirm dialogue لما يجي أتكلم على الـ show confirm
dialogue معناته أنا إيه الشغلات اللي بدي إياها منه
مين أول حاجة مين الـ parent الـ top level window
تبعت مين هي الـ J frame صح هاي الكومة هاي الـ frame
اللي عندي بعد هيك بدتديله الـ message الرسالة تبعتي
إيش الرسالة do
you want
to exit هل تريد الخروج هذا
نص الرسالة لحظة
أنا بدخله text قاعد طيب الـ title تبع الرسالة
system exit تمام
إيه نوع الرسالة؟اللي بتسأل إيش بتكون عليها
المفاتيح؟ أنا جاي بتكلم عن confirmation yes أو
no؟ طيب عشان أجيب الـ no اللي موجود عندي هان جي
option بين dot لاحظ الآن في عندي بدي أدور على الـ
okay cancel option هل هو مناسب؟ لاحظ الآن أنا
بتكلم على نمط المفاتيح اللي بدها تظهر نمط
المفاتيح اللي بدها تظهر للـ user اللي عندي okay
cancel option هل okay و cancel مناسبة مع الـ confer
do you want to exit هذه السؤال جوابه المفروض يكون
yes و no لحظة أنا ما أتكلمش من ناحية برمجة لغوية لأن
كل المفاتيح هذه عبارة عن integers المفاتيح هذه
عبارة عن integer تمام وبالتالي هل مش هذه المناسبة
أنا بدي أنزل تحت على yes no option
تمام؟ هي الرسالة تبعتي أنا بقول يجب أن تكون final
لأن أنا معرفة في داخل الـ class مافي مشكلة في
الموضوع هاد لما أنا بضغط على المفتاح القيمة اللى
بدأت نعملها return نوعها integer فبروح أقولها إن
أنا في عندي integer وسميها الـ result الـ R هروح
الآن في if statement if الـ result equal إيش الـ button إيه
الـ yes مظبوط هروح أقوله الـ j option dot yes option
اللي هي منعها برضه integer لحظة أنا قاعد بقوله لو
كانت yes option معناته إن أنا بدي أعمل exit لو
ما كانتش yes option خلصنا هي save و هي run الآن
control x ظهرت الرسالة do you want to save exit to
exit عفواً do you want to say exit yes or no لو
ضغطت no مش هتصير حاجة كمان مرة لو جيت على الـ X اللي
فوق مش هتصير إشي يعني بلغي الـ message أنا قاعد لكن
لو أنا قلتله yes عمل exit من الـ application ليش؟
لأن أنا قيمت مين هو المفتاح اللي انضغط طيب الآن لو
أنا اعتمدت مع الـ نمط هان okay و cancel
okay, cancel option اشتغلت هنا okay, cancel ليش
عامل exit؟ ليش عامل exit مع إنه أنا حقق هنا؟ yes
option لأن في الآخر هدول المفاتيح اللي طلوا على الـ
message أخدوا نفس الـ index نفس الـ integer صفر واحد
اثنين أو واحد اثنين ثلاثة، مصبوط؟ هم مفتاحين واحد
واثنين أو صفر واحد وبالتالي الـ button الأول أخد الـ
index الأول و الـ button الثاني أخد الـ index الثاني
وأنت فعلياً قاعد تسأل عن الـ integer وغالباً هو الـ
index تبعت الـ value واضحة الأمور، لكن تعالى شوف
كمان مرة نص الرسالة من ناحية الـ code شغال، مش
مشكلة عندي الآن exit Do you want to exit؟ OK مش
راكبة على نفس السؤال المفروض الـ options اللي تحت
هي عبارة عن response للسؤال أو إجابة للسؤال اللي
فوق فبالتالي هي yes or no أفضل كشكل تمام واضح
الأمور؟
هرجعها لـ yes no option عشان تبقى consistent تمام
وبكذا أنت بدك تشتغلي مع العناصر الساقطة طيب في حالة
الـ cut و الـ copy و الـ paste إيش بدي أروح أسوي أنا؟
برضه نفس الكلام بدي أعرف action listener object و
في الـ action performed أكتب الـ code الصحيح اللي هو
هذا اللي احنا شفناه المرة الماضية هنرجع
للـ pop-up menu الآن الكود هذا هحطه وين؟ في داخل الـ
action performed method اللي هو الـ action
listener اللي أنا عرفته و أضيف الـ action listener
على الـ cut و الـ copy و الـ paste و خلصنا يعني نفس
الـ sequence و نفس القاعدة بدون أي تغيير تمام الآن
بدي أنتقل للـ pop-up menu احنا الآن اشتغلنا على
menu bar هيو مافيش مشكلة هيرن كمان مرة الـ menu bar
هيو بظهر قدامي هيو عليه مجموعة قوائم edit و copy و
paste حسب الحاجة دي مظبوط ولا لأ؟ تمام الـ pop-up
menu الـ pop-up menu إن هي عبارة عن قائمة تظهر في
المكان اللي أنت بتحدديه تظهر في المكان اللي أنت
بتحدديه وطبعاً قولني عشان نظهر الـ pop-up menu في
عندي method اسمها show تمام؟ pop-upobject.show
وبتاخد الـ parent اللي هو الـ panel أو الـ container
اللي بتظهر عليه و الـ position x و y أنا عندي
container واحد اللي هو الـ frame في غيره لأ تعالى و
أريك نشق popup menu من البداية طيب لأن عشان
بس نأكد على شغل مهم جداً في popup menu هيتجيه popup
menu بدي أسميها bob equal new jbobmenu الآن بقدر
أضيف عليها نفس الـ element اللي أنا أضفتهم وين؟ في
الـ menu لأن الـ bobmenu إما هتاخد menu jmenu أو
هتاخد jmenuitem أو هتاخد separator و أنا في نفسي
اللي موجودة في الـ file بدي أعرضلك إياهم في داخلها
فأروح على الـ bob هنا أقول dot add
admin أول واحد مش قلنا الـ open هاي الـ open أضفته
pop.add separator أضفت separator و الـ pop.add الـ
exit ليش
أنا؟ pop.add الـ exit هل أنا بحاجة أعرف action؟ لأ
لأنه already الـ menu item عليه الـ action تبعه
ممتاز هيها وين هتظهر؟ مش هتظهر لأن أنا ما حددت لهاش
ظهور طيب تمام طب كيف بده تظهر؟ طريقة ظهورها ..
طريقة ظهورها أروح أقول له pop.show وين بده هتظهر؟
من الـ container اللي بده يحتويها الـ frame تبع الـ
position مثلاً بدوره هقوله عند الـ X مية و الـ Y مية
هتشتغل؟
هتظهر؟ هتظهر بس هنا system هدين error ليش؟ أيوة بس
الآن الـ method أنا جاعت بظهرها بشكل برمجي جاعت
بظهرها بشكل برمجي بس أنا ما أتكلمت على الـ click لأن
الـ method dot show إنها إيش بتساوي؟ بتعمل view للـ
pop-up menu سؤالي، يعني هل هترضى تظهر؟ هشوفها؟
لحظة، لما أضغط على الـ panel لحظة، لأ لأ، بدي أنتبه
لشغل يا أستاذ إنه طالع في الـ panel، في الـ frame،
لسه على الـ frame invisible الـ frame invisible و
أنا قاعد بقوله اعرض الـ pop-up إيش
راح أجلّجها؟ component must be showing on the
screen to determine its location لازم تحدد شغل
المعروضة أساساً وبالتالي هذه لازم تكون بعيدة كمان
مرة لسه أنا ما أتكلمش إنه بدي إياها تظهر بشكل تلقائي
عندي click هيها ظهرت القائمة هدا هي هي pop-up لأن
النقطة هذه مية مية اللي أنا حددت لها هيها وبالتالي
عملت لها show بشكل سليم yes بس الـ show مش هي اللي
أنا بدور عليه بس الـ show مش هي اللي أنا بدور عليه
خلينا نعملها control X الآن إذا أنا بدي إياها تظهر
بشكل تلقائي احنا شوفنا component ثاني اسمها set
component popup menu بروح على الـ object أو desired
object الـ JFrame على سبيل المثال وطبعاً الـ method
هذا للأسف مش applicable مع الـ JFrame dot set
component لو طلعت في القائمة مافيش pop-up menu
معناته مش هتسبق معايا ممكن ألتف عليها بطريقة ثانية
من خلال mouse listener أضيف mouse listener على
مين؟ على الـ frame هاي على الـ frame أقول له dot add
mouse listener هي نقوم باستخدام mouseListener
وتعالى نشوف مجموعة الـ method الموجودة في الـ
implementation mouseRelease يعني أنا كنت ضغط و سبت
الماوس mousePressed فرحظة أنا ضغط على الماوس mouse
exit و mouse entered يعني لما صار الـ mouse فوق ال
هذا الـ menu entered و الـ mouse exit لما يسيب الـ
frame تمام يعني هالأن شوف المساحة تبع الكود هذه
تفرضي هي الـ geframe تبعتي الآن الـ mouse قاعد متحرك
لبرا في اللحظة اللي بيسيب فيها المساحة بتاعة الكود
صار exit الآن entered في الأول لحظة تمام و في عندي
mouse click ممتاز معنى تقول أنا هان بدي في الـ mouse
click هان أنا بدور وهقوله ايش أظهر الـ pop up
menu و الـ pop هذا عشان أنا داخل الـ class بتحولها ل
final هي
موجودة الآن ايش اللي حيصير لما قاعد يعمل click
هتظهر بس و أنا قاعد أظهر في نفس المكان و لاحظي أنا
بضغط مفتاح mouse يمين و بضغط مفتاح mouse شمال مرة
و بتظهر وبالتالي مافيش عندي شغلة جديدة لحد اللحظة
لكن show صارت تظهر بشكل تلقائي عند click عشان
أتحكم في الـ position الـ event هذا جاي من مين؟ الـ
event اللي صار مش mouse event هايو mouse event
بقدر أرجع بالـ point تبعتي وين أنا عملت click بروح
بقولهالـ event.getX
الـ X كوردين اللي صارت فيها والـ event.getY هي run
صارت
تظهر وين؟ في المكان اللي أنا بعمل عليه click ليش؟
لأنه مع الـ E mouse event النقطة اللي عمل عليها
click أو الـ point أنا بقدر أحصل عليها طيب، لأن
النقطة هذه
النقطة هذه ممكن أن أسترجحها بطريقة ثانية أقول الـ
point الـ
Java dot AWT point equal even dot get point
احنا شفنا الـ point سابقا لما اتكلمنا عن الـ
dimension أو الـ location عفوا و set bound تمام
even dot get point و أروح بدل ما أعتمد على even
dot get x أقول الـ point dot x الـ point dot x و الـ
point dot y هي نفس الـ code ما تغيرش ولا حاجة dot
Y بس فعليا أنا ممكن الـ point هتحتاجها لـ position
ثانية أو لشغل ثانية وبالتالي رجعت بالـ point بشكل
كامل عشان أورجيك الـ alternative codes اللي ممكن
تكون موجودة عندي هان وهتخليها تظل موجودة بالحل
السابق اللي هي event E.getX وهنا E.getY
.get y ونعمل الـ comment 100
% أنا لاحظت جاية بعمل click سواء يمين أو شمال يمين
أو شمال أنا جاية بعمل click يمين أو شمال بتظهر الـ
pop-up بديها تظهر بس مع مفتاح الماوس يمين الآن
تعال نشوف في الـ E في عندي شغلة اسمها E.get أو في
عندي method اسمها getButton باشت بترجع mouse mouse
even نوعها integer مصبوط الآن أنا بقدر أروح أقوله
if الـ mouse أو الـ even.getButton equal
event.button1 و لا button2 و لا button3 الماوس حد
أقصى كم بطن عليه تلاتة تلاتة مكانش فيه الآن بطن و
roll و button تمام في عندك three buttons حسب
structure تبعت الماوس في الآخر الـ buttons هذا
اليسار واحد التاني اتنين ف أنا هقوله لو كانت هذه
تساوي button اتنين روح
نفذ مين؟ روح
نفذ الشرق اعمل show للـ pop-up menu هي run هي الآن
قاعد بضغط بمفتاح الموسي اليسار Click مفتاح الماوس
اليمين هو شكله تلاتة حتى الماوس اللي عندي هيوقيه
الآن الـ role اللي إنها موجودة عندي هان الـ role
اللي إنها موجودة ولو أنا ضغط على الـ role هيها هي
المفتاح التاني الـ click تبعت الـ role هي المفتاح
التاني بالتالي في الكود اللي عندي هان Ctrl X
معناته الـ بوتن تبع يكون تلاتة بوتن
تلاتة هاي بوتن تلاتة بمفتاح الماوس اليمين تمام؟ بس
في الأخر الاربعة اتكلم على بوتن تلاتة وبالتالي هاي
صار في عندي في مجال أظهرها بشكل تلقائي عند click
بالماوس بس احنا شفنا method اسمها
setComponentPopupMenu
مصبوط؟ set component pop-up menu عشان أعرضها أو
أربطها بشكل تلقائي هذا الـ code بدي أوقفه أنا الآن
شوية تابع الـ action listener jframe
.addactionlistener لأنه خلصنا منه في المرحلة
الحالية هي comment و بدي أروح .. بس دكتور .. نعم
الـ method الأخيرة ما عرفها حكيتها أي method أخيرة؟
set component pop-up .. لأ حكيتها في الـ slide يا
أستاذ هي .. تعال نشوفها .. هي الـ slide خلصنا من
الـ Accelerator هاي
set component pop-up menu و قلنا set inherit
هنشوفهم الآن حتى لو ما حكيتهمش أو ما قلتهمش في الـ
slides الآن بنشوفهم ما فيش مشكلة إن شاء الله تعالى
طيب، الآن لو أنا في عندي panel
بدأ أشغل بعيدا عن الآن العناصر اللي موجودة عندي
و بدأ أروح أعرف jpanel panel="new
jpanel"> و الـ panel اللي عندي هذا بيعملها set
border بيضيف لها border عشان أنا أشوفها قلنا
border factory border
factory dot create titled
titled border و الـ title اللي بدي أحطه my panel
بغض النظر ايش يكون بس عشان أنا بدي أميزها الآن
صارت الـ panel موجودة
الـ set border يكون
بس بالخطأ أنا لسه أختارت background عشان قلت من
البداية طاولوا رواحكم يعني مش هي okay set border
الآن الـ border البني الهادي بدأ تنضيف لمين على الـ
frame jframe.add البني ممتاز الآن هتبين هسبوط هي
save تأكد كل شيء تمام هيها بس الـ size تبعتها صغيرة
آه
أنا في الفخ الآن و الـ ميني وقفت anyway طيب الآن set
border أضفناها بدي أضيف بس two buttons هاي J
button بدي أسميهم بي one equal new J button سمي
button one وفي
عندي J button كمان واحد button two
button 2 وابدأ أضيف الـ 2 على الـ panel ولا شو رايكوا؟
عشان أشوفهم يظهروا على الـ panel panel.add b1 و
panel.add b2
delete
Okay لحد الآن شغل عادي وما فيش فيه issue و ما ربطش الـ
pop-up menu بالـ panel هي صارت my panel واضحة ما أخد
جزء من الـ frame الآن بدي أروح على الـ panel حتى
مباشرة بعد الـ panel أقول له panel.set component
pop-up menu set component pop-up menu و الـ pop-up
و الـ pop الـ message اللي أنا عرفتها هي click الآن لو
أديت على الـ panel وغطيت مفتاح الـ mouse اليمين
تظهر و تظهر في position اللي أنا كتبته حتى بدون
حدده على الـ position لأن الـ set component pop up
menu
بتروح تشتغل الـ code اللي أنا كتبته في داخل الـ
panel وبالتالي هذه كانت answer اللي ما روحت ألخم
رأسي في code كبير ما له لازمة بس للأسف بما أن الـ
component هذه set component pop up menu مش
applicable مع الـ frame فاضطرت أروح أعوض عنها من؟
بالـ action listener بالـ mouse listener فتمام لكن
في عندي أنا مشكلة الآن لو أنا إجيت فوق الـ button
وعملت بمفتاح الـ mouse .. لاحظي حتى بمفتاح الـ mouse
اليمين أو عفوا اليسار مش شغال فقط هو بيشغل على
button تلاتة بيشتغل هيّه على button تلاتة اللي حابب
يطلع على أصابعه يعني تمام؟ على button تلاتة الآن لو
أنا أجيت على الـ buttons هدول لـ click بمفتاح الـ
mouse اليسار لـ click عادية ما فيش مشكلة بتعمل
release لـ action event لكن لو أنا ضغطت بمفتاح الـ
mouse اليمن ايش بيصير؟ وين البوب؟ لماذا لم تظهر؟
على الرغم من أنه موجود في البنل الآن البطون الجديد
تبعك اللي أضفتيها أو أي component أنت أضفتيها على
البنل راحت حجبت البنل حجبت البنل لأن أنت فعليا جبت
الـ component و حطيتيها على البنل فلما أنا بأضغط
بمفتاح الـ mouse بأضغطش على البنل بضغط على مين؟ على
الـ component اللي عليها إذا أنت إذا أنت بدك تظهر
الـ component بكل بساطة بكل بساطة ايش بتروح تساوي؟
هتروح هنا على الـ button مثلا هي بي واحد dot set
inherit pop-up menu و أقوله true set inherit pop
-up menu و أقوله true الآن لاحظي أنا فعلت مع
button one وما فعلتش مع button two هي run الآن فوق
button one لو ضغطت مفتاح الموسي اليمين هي الـ pop
-up ظهرت بينما لو ضغطت مفتاح الـ mouse اليمين فوق
الـ button 2 ما ظهرتش ليش؟ لإني أنا قاعد بقول له تورف
من الـ container الـ pop-up menu اللي موجودة عليه
وبهيكسر ثاني أظهرها على أكثر من position حسب حاجتي
مع أي component بالضبط لكن هل هي موجودة مع الـ J
frame؟ لأ، مش موجودة مع الـ J frame وبالتالي بدنا
نختار الطريقة الصحيحة اللي أنا مثلّ فيها الـ pop-up
menu شوفتي أكثر من طريقة والأمر متروك إليك الآن
Exit؟ Yes. في أي سؤال يا بنات؟ احنا بقول في عندنا
نجرب بس نضيف الـ action لكن الوقت ما كفّى راش بعدل على
الـ code بحيث أن بدل ما أعتمد على action listener
بتعتمد على مين؟ على الـ action و بنزلكم الـ code إن
شاء الله جاهز بتشوفوه على الـ model في أي سؤال يا
بنات؟ أنا هفترض أنه اليوم خلصنا من الـ Graphical
User Interface الجزئية اللي بقّايلة في الـ slide
بعينك الله تطلعي عليها يعني تفاصيل في الـ dialogue
مطلوبة منك مش هتقولي لي أنا مش مطلوبة، مطلوبة منك
هيفصلك في الـ dialogue بالكلام اللي احنا جربناه و
هنشوف الـ file dialogue اقرأيها لما نتكلم عن الـ
file بداية المحاضرة اللي جاية إن شاء الله كيف أعمل
select لـ file عشان نتعامل مع الـ file يعني يبقى في
عندك أربع أو عشر slides اقرأي لي أياهم وأنا هرجعهم
في حينهم حسب كل جزئية وأن أنا محتاجها في أي سؤال
يا بنات اليوم بنزلها إن شاء الله الله يعطيكم
العافية