بسم الله الحمد لله والصلاة والسلام علي رسول الله
اليوم ان شاء الله تعالى هنتقل ل part و part مهم
جدا في التعامل مع graphical user interface وهو
القوائم أو ال menus طبعا كلنا عارفين ال menu أو
القوائم و بنعرف أهميتها اللي دائما بتختصر أو بتجمع
كل ال actions أو كل ال majormethods أو الـ
performance performance actions اللي أنا بدياهم
بحطهم على قائمة لأن ال user أحيانا ال window مافيش
فيها وسعة أحط عليها مفاتيح مثال على سبيل المثال في
ال word لما أنا بستخدم ال word editor الشاشة أنا
محتاجها كلها عشان أكتب النص اللي أنا بدياه و أشوفه
بالكامل لما بدي أعمل saveتخيل اللي يوم تكون عندك
مفتاح موجود عشان save مفتاح تاني عشان ال copy و
مفتاح تالت عشان cut و تالت و رادع و كده معناته فيه
جزء كبير من الشاشة او من ال frame تبعي هيروح
للمفاتيح بينما هذه ممكن انا استغني عنها كلها ياتا
و طبعا هذا الكلام برجع لطبيعة البرنامج و تصميمه
بحط كل ال command اللي انا بدي اياها في داخل ال
menu او داخل القائمة و عادة لما احنا بنتكلم على
menuأحنا بنعرف و لاحظ ظهورها مباشرة تحت شريط
العنوان تبع ال frame و عندي أنا غالبا menu واحدة
على ال application يعني أنا مش بحاجة لأكتر من menu
أنا بنشغل menu واحدة بحط عليها ال most frequent أو
ال most important task اللي بديها و بخليها تظهر
على ال application و غالبا بتظل طول ما ال
application شغال طول ما ال main frame أو ال main
window تبعتي موجودةالـ menu تبعتي هذه بيبقى موجودة
المينيو هذه مكوّنة من أكتر من شغلة أول شغلة من ال
menu bar شريط
القائمة اللي هو هذا الشريط اللي موجود مباشرة تحت
شريط العنوانة و بتتكلم .. مكوّنة من ال menu و لما
بتكلم على menu بتكلم على قائمة يعني list و في عندي
menu item
طبعا بأتكلم على menus ممكن يكون شريط العنوان
الشريط القائم القوائم أو الشريط القائم اللي عندي
ممكن أضيف عليه أكثر من menu مثل ال file menu و ال
edit menu و ال view menu و ال format و ال help لو
أتيت على سبيل المثال و قلتلك انا هي ال notepad
كلنا بنعرفه هي
شريط القوائم تماماالـ menu bar تحت شرق العنوان
file edit format view help هذه عبارة عن مجموعة من
ال menus القائمة يعني انا فعليا لو ضغطت على ال
file أو ال save مش هيكون في عندي ايش action لكن ال
action هيظهرلي القائمة اللي موجودة أمامي وبالتالي
هي ال menu ال menu items هي عبارة عن العنصر اللي
موجود في ال menu و اللي ورا action مثل لما انا
باجي بقوله saveلو انا ضغط على save الان هذه وراها
action بدو يتنفذ او وراها code بدو يتنفذ هذه
بنسميها menu item هذه بنسميها menu item وبالتالي
ال form انا عندي بتحتوي على العديد من ال menus و
ال menu items بالاضافة لشغل مهمة شايفة الخط هذا؟
هذا الخط مالوش فايدة هو موجود فقط لأجل
organization unit او separation unit حتى اسمه add
separator لما هنشوفه الفكرة فيه ان انا بستخدمه
عشان اقسم ال menu تبعتي لفئات هجول هى العناصر هدول
اللي لهم علاقة بعض بعض وغالبا لما هى على سبيل
المثال في ال notepad لما في ال file لحظة
new open save save as خط big setup print خط و exit
لو طلعت في ال task اللي فوق new و open و save و
save as كلهم بتكلموا على ال document التنتين اللي
دحت big setup و print بتكلموا على طباعة ال
document و ال command الأخير عشان يعمل exit لو
روحت على ال hand هلاجي undo خطcopy أو cut copy
paste و delete و خط عشان يعمل separation ما بين
العناصر اللي موجودة عندي هنا وهكذا يحدث ال
organization اللي موجودة ال organization اللي
موجودة او ال separator هذا بس عشان يقولي هدول
المفاتيح related مع بعض او هدول ال menus related
مع بعضهم مش بيقدوا نفس الشغل لأ هم related لنفس ال
task اللي ممكن انت تحتاجهاطيب وبالتالي بتكلم على
menu separator أو separator تعالى
نشوف مع بعض كيف أنا بدي أنشق ال menu إنشاءنا للمنه
بسيط و بسيط جدا كله بيعتمد على مجموعة ال classes
اللى بتوفر ليها ال java أو ال swing jmenubar باخد
منها object عشان أنشق menuوالـ menu هذه بدأ ترتبط
بالـ frame لا يمكن أن ترتبط مع الـ panel لا يمكن
أن ترتبط مع ال panel لازم تكون مع ال frame و بضيف
عليها .. في عندي method اسمه set jmenubar و بديها
ال menu bar اللي انشأته او ال jmenubar اللي انشأته
لما انا بدي انشق menu هاي في عندي jmenuوبديها
الاسم أو ال title أو ال label كبرتها و بروح بضيف
ال title هذا أو ال object هذا عفوا على ال menu bar
وبالتالي أنا بضيف ال menu bar مرة واحدة و بصير
بضيف ال menus على ال bar و ال menu item إما بده
تنضيف على ال bar بشكل مباشر أو بده تنضيف على ال
sub menu أو ال menu اللي موجود عندها يعنيلو انا
اتيت بالمثال اللى موجود عندى هان الـ command based
بناء على المثال هى edit menu edit ايش نوعها؟ menu
cut و copy و based عبارة عن menu items كلهم
بتعرفوا بنفس ال definition انا وصلت لوين؟ بدى اعرف
ال menu او بجه عرض اللى كان ال menu item اللى هو
ال best اللسق menu item جه menu item best edit
menu اللى اشترناها فى ال slide السابق اللى هى هذه
.add الـ menu item اللي عندي اللي هو ال based item
حسب اسم ال object تمام بعد ما خلصنا في الترتيب مش
في عندي hand في عندي separator مباشرة بقوله menu
او edit menu او اسم ال menu اللي عندي edit menu
.add separator خلاص برسملي تحتهم خط مباشرة تماما
ظهور ال elements هنا على القائمة زي ما كنا بنظهرهم
على ال combo box طبعا في insert at وفي المجموعة ال
method التانية موجودة لكن احنا ال menu بدنا نشتغل
معاها بشكلها البسيط اللي موجود عندها طيب روح تعملت
ال separatorلو أنا مثلا في ال options هنا ال
options هي عبارة عن sub menu مصبوط بروح بعرفها
علينها إيش J menu أو menu و بروح بضيفها على ال
menu اللي موجودة وبالتالي صار في عندي edit اللي
بتحتوي على sub menu اللي هي عنوانها ال options
اللي هي ال options وهكذا حسب ال structure بالمثال
اللي موجود مع ال notepad عندي fileو Edit و Format
و View و Help معناته على الأقل في عندي خمسة menus
بتكون موجودات و هدرا كلهم وين موجودات؟ على ال menu
bar على ال menu bar و بعد هيك العناصر بتنضيف على
ال menus اللي موجودة عندهاعندما عملنا options menu
أو الـ sub-menu لما بضيف العناصر بحطلها dot add
عادي بضيفها .. اه خلاص هذه الآن ال options menu ال
option menu على سبيل المثال بدي بحطلها forward
بروح بنشي ال item اللي اسمه forward as a menu item
بروح بقوله option menu حسب اسمه dot add forward
مافيش مشكلة إن هي في آخر menu حتى وإن كانت موجودة
الفكرة وين؟ إن الـJ menu ممكن
تكون في مكانين الأول على الـJ bar الـJ menu bar
والتاني في J menu مصبوط؟
وبالتالي مافيش مشكلة لأن عشان هيك سميتها أنا sub
menu لكن ما زلت بتعمل معاها as a menu a complete
menu
هك بكون أنا انشأت المينيو شكلا لو ضغط click على أي
عنصر في المينيو مافي action طب عشان اعمل action او
انافذ code او بنفذ task معينة لما اعمل click على
المينيو ايش بده يصير؟ بده يعمل release ل event ال
event اللي بده يعمله release من نوع action event
واذا بتذكريلما المرة الماضية اتكلمنا عن الـ action
event قلنا ان الـ action event بيعمله release لو
انا عملت click على menu item بيعمله release لو انا
عملت click على menu item وبالتالي انا ممكن اشتغل
او اطبق الـ action listener اللي انا عرفته سابقا
أتعاملت معاه سابقاً مع الـ buttons و ال checkbox و
ال radio button و أضيفه لمين؟ للمنه item بعرف ال
action listener و بعرف ال task اللي أنا بدي إياها
ناخد مثال بسيط تبع ال exit من ال file في الآخر في
عندي exit صح؟ بروح بنشق jmenuitem exit يساوي ال
new jmenuitem و ال label تبعتها exitتمام الآن
بحروح على ال menu file menu.add exit اضاف ليها اخر
element لان ماضفتش اشي بعدها بدي اضيف عليها action
listener مباشرة ممكن اشغل بواحدة من القرص التلاتة
اللي اشتغلناها زمان مع ال action listener او
المحاضرة الماضية ممكن اروح اعرف action listener
actionListener يعني أنا بدعم الـ implementation
للـ action performed و ال code تبعي بيدكتبه في
داخل مين؟ في داخل ال action performed method طيب
كمان مرة بنرجع بنقول أنه الآن بتعامل مع ال menu
بتعامل مع ال menu مثل ما كنت بتعامل مع ال button و
ال check box و ال combo box بعرف action listener و
بضيف ال action listener بنفس الطريقة علىالـ menu
item اللى موجود عندى عشان انافذ ال code اللى فى
داخل ال action performed هذه الطريقة اللى بنعرفها
إذا بتتذكر لما اتكلمنا عن ال buttons قولنا واحد من
ال constructor تبعت ال buttons بياخد شغل اسمها ال
action كان
بياخد object من نوع actionالـ constructor تبع الـ
J Button لو رجعت للـ slide قلتلك هنتكلم عليها
لاحقا ان ال action هي عبارة عن object
بدي أتعامل معاه لكن بعيدا عن listener أنا بعرف
object واحد بدون ما يكون فيه عندي listener وهنا
بضطر أنه مع ال method اللي موجودة عندي من خلال أو
مع ال menu item اللي عندي بستخدم ال method الاسمها
set action ال action هو عبارة عن abstract object
أو abstract actionومباشرة هذا هيعمل implementation
لمين؟ للـ action performed هي نفس ال method اللي
موجودة مع مين؟ مع الـ action listener interface،
مصبوط؟ وبالتالي، أنا قاعد بقول لـ menu item أو للـ
button إنه مافيش داعي تعمل release لل event لبرا،
تمام؟ already ال execution تبع ال event تبعنا
هيوهان، يعني بينجو سين أنا مافيش داعي أعرف
listenerطالما أني بتكلم على action مافيش داعي أعرف
listener ممكن مباشرة أضيف ال element أو ال action
object ويغنيني عن ال action listener اللي موجود
هتلاحظي و كأني قاعد بقوله action listener اسمه new
action listener و راح تداني ايه سوا؟ عمل action
perform لكن ال listenerأنا هذا بده فعليا هيعمل
listen لكل ال events ويعملها filtering بينما هانح
ال action هيروح ينفذ ال code أو ينفذ ال action
event بشكل مستقل وبشكل وحيد الآن إضافة ال action
على ال menu item من خلال ال method اسمها set
actionset action و بديه اسم ال action و ممكن بنفس
الطريقة اشتغل بحيث ان انا اضيف ال action as او
اضيف anonymous action زي ما كنت اتعامل مع
anonymous listener اعرفت ال menu item مباشرة menu
item.set action و اعرف ال action في داخل ال ghost
تبع ال set action وبالتاليهك انا اختصرت او انجزت
في موضوع ال menu و ال code اللي وراها ال menu و ال
code اللي وراها و كل ال code هيشتغل بنفس الكيفية
مع كل element مع كل menu item المفروض انا اعرف
action او اعرف لها action listener مظبوط ولا لأ؟
طيب الان ال exit و ال formatting ماشي حالهمبس في
عندي تلت مفاتيح خاطرات جدا اللي هم ال copy و ال
cut و ال paste هدول إيش بيساوي بينسخوا ال data
بينسخ ال data و بيحذفها من ال source و بضيف ال
data اللي موجودة في المخزنة سابقا بضيفها لوين؟ على
ال text field أو ال text area اللي موجودةالسؤال
اللى بيطرح نفسه بدك تشتغل ال copy و ال cut و ال
paste بس لل application تبعك ولا بدك تتعاملي مع ال
windows او مع ال operating system اللى البرنامج
بتشتغل عليه بين جثين يعني بدك تعملي copy من برا
البرنامج و تعملي paste للبرنامج و العكس صحيح ولا
فقط ال copy و ال paste بتبتم جوا البرنامج اذا انت
بتخططي ال copy و ال paste تبعتك تظل جوا البرنامج
معناته أمر بسيط جدا باجع ال text field
.get text أظبط برجعلي بالنص بخليه في ال variable
اللي من نوع ال string سمي x بدي أعمل based لما
بضغط على ال based بروح بقوله ال text field text
field 2.set text وقيمة ال x أظبط هذا ال based ال V
بعد ما بقوله جت ال text بروح بقوله text field dot
set text none
فاضي تنحل مش مشكلة ولا في أسهل منها و ال code هذا
بده يصير في داخل ال action performed بكل بساطةلكن
لو كنت اتعامل مع ال operating system اللي انا
بشتغل عليه بحيث انه اعمل copy من ال application
تبعي و اعمل paste على اي application اخر او اعمل
copy من ال operating system و اعمل paste في داخل
ال application تبعي هذا بيطلب مني اعرف شغلات جديدة
اللي لها علاقة بال operating system مثل clipboard
على سبيل المثال وهذا code
بسيط من أجل التعامل مع ال copy و ال paste مع ال
operating system تعالى نبدأ من فوق ايش و هذي وين
موجود؟ action performed يعني لأن انا في عندى
listener او في عندى action تمام و ربطت ال copy و
ال cut و ال paste مع ال action listener هذا على
سبيل المثال و عمل implementation لل action
performed اللي موجود عندى هانى بداية هانى
clipboard ال clipboard هي عبارة عن ال buffer بتخزن
فيه ال data اللي بنعمله copy و copy بالتاني get
toolkit get system clipboard لأنه مبيديش اعتمد على
clipboard من عندى لو انا بدي اعتمد على clipboard
من عندى انا بدي variables و بخلص بس انا بدي اعتمد
على ال system clipboard بدي احدد ال command تبعى
الـ command عبارة عن ال event هي .get action
command ايش ال command اللي انقلب؟ ايش ال menu
item اللي انعمل عليهش؟ ال click ودخلتها على switch
statement او if statement حسب الكود اللي انت
بتشوفه مناسب بكل بساطة في حالة ال copy هيتنفذ
الكود اللي احنا شوفناه سابقاً بس وين بدو يتخزن؟في
الـ clipboard اللي موجودة عندى لاحظى هي ال text
field و تجاه ال text نفسها بس أنا خزنتها في
variable لما كنت بتولّف داخل جهازي الآن هروح أقوله
string selection ال data بذا تساوي ال new string
selection لل text field اللي موجود أو للنص اللي
موجود عندى هان و ال text field content ال data
اللي موجودة عندها أضفتلها ال data اللي موجودة else
لو كان العملية clearمعناته امسحه لو كانت cut هي
موجودة تحت أخدت ال text بنفس الطريقة اللي فوق و
أضفته و بعدين عملت ايش null في حالتي ال based شوية
ال based اللي فيها transformation اللي بدو يصير لو
كان ال command تبعي based معناته أنا بضرحة
transferable clip data هقوله clipboard.get get
contentوفي الآخر عرفت الـ String والـ String هذا
بدي أسويه بال data اللي موجودة ولاحظي عمالي بحاول
أعمل وكأني بعمل casting لل data type اللي انا بدي
استرجعها بال variable اللي موجود عندهان وبهيك لأن
عملية ال get data أو ال get transfer data ممكن
تعمل exception فلازم اعملها implementation ضمن
catch او try and catch بالمناسبة هذا ال code كم
مرة انت بتكتبيه؟ مرة واحدة مش اكتر من كدهطبعا مجرد
ان انا جايبه هنا عشان لو بدى اتكمل education معين
اتشغلي هل هذه الطريقة الوحيدة حتما في غيرها تمام
حتما في قرق تانية غيرها في موضوع ال implementation
لكن مستحيل تبدع ال clipboard و ال functions اللي
موجودة في داخل ال clipboard اللي موجود عندى هنا
وبالتاليعادة البروجرامر لو بده يعمل application
كامل و تشتغل على menu هياخد ال code هذا في action
listener واحدة موجودة و بيربطها بال buttons أو
عفوا بال items ال menu items التلاتة أو الأربعة
اللي موجودات طبعا انا بتكلم هنا على أربعة لأن في
عندي إيش في عندي clear زي ما كانت مع ال text field
في الآخر ال code اللي عندي مع ال menu فكرتنا واحدة
هتظل انه انا هعتمد علىهتظل اعتمد على الـ
ActionListener والـ ActionEvent اللي احنا شفناهم
سابقا طيب لما انا باجي باتكلم على ال
file او ال menu فى عندي شغلة بنسميها الـ Nominal
Keys لما انا بضغط ال Alt لاحظى ال F في ال file
صارت تحتها underscore ال E ال O في ال format يعني
لو ضغطت O الآن راح فتح ليشالقائمة المباشرة الـ W و
الـ F في الـ E لو روحت قولتله مثلا F خلّته اتحد
وصلت لل command اللي موجود و هاي احنا بنسميها الـ
Nominate Keys الـ Nominate Keys هي عبارة عن ال key
اللي انا بده اعتمد على اللي بده يكون underlying
letter على الشاشة او على ال menu name اللي موجود
عندى يعني لو انا اجيتفي الـ cut بدي أصللها من خلال
الـ Alt معناته لازم أروح أحدد في ال constructor
إيش العنصر ال constructor الآن احنا سابقا مع ال
menu item كنا بنتكلم على ال label فقط الآن بدي
أضيف ال label و ال nominic تبعتها أو ال nominic
character أو ال nominic key اللي أنا بدي أضغطه ال
nominic كمان مرة مرتبط بال Alt تمام؟ لو أنا ما
أضفتهوشممكن أضيفه من خلال الـ method اسمها set
nominic و بحدد الحرف بينفع أحط حرف من خارج الكلمة؟
من خارج الكلمة؟ يعني مثلا الآن الكلمة اللي عندي أو
ال label اللي عندي هانهلب بينفع أحط حرف الأيه؟ لأ
لأن ال nominic هو عبارة عن character من ال
character تبع ال label بدو يظهر تحتي إيش ال
underscoreهي كمان مرة هاي يوم هاي الان مافيش عندى
خطوط هنا file مافيش شيء و مجرد اضغط على مفتاح ال
Alt تم تحديد الحرف مع كل .. الان لو ضغطت كمان مرة
على سبيل المثال على ال H راح فتحلي القائمة تبعت ال
H الانأنا مابتكلمش قاعد على ال accelerator قاعد
بتكلم وبالتالي هذا لازم يكون الحرف جزء من الكلمة
جزء من الكلمة الآن لو أنا بدي أتكلم على ال
accelerator أو التسريع معناته أنا بدي أضغط على
المفاتيح إما ال control أو ال shift أو ال alt زائد
ال characterالحرف اللي انا بدياه مثل احنا لما
بنعمل copy ايش بنسوي Ctrl C Ctrl V Ctrl V من
الكلمة لأ لما بنعمل cut Ctrl X مش من الكلمة
وبالتالي يعني على سبيل المثال هاي هان في ال editor
لو انا اجيت كتبت هيك وظللت النص وهي Alt وهي X ايه
سوى؟ ولا حاجةسواش اشي لأن المفروض الـ Nominic هي
واحد من الحروف من الكلمات اللي على ال menu عشان
يسهّل عملية الوصول لل menu الآن بقدر اقوله E بطلع
مثلا انا بدي اعمل cut لجيته حاطة Nominic تحت مين
تحت ال T هي ال T راح جس النص تمام؟ يعني ال Nominic
character لازم يكون جزء من الكلمة بينما لو انا
اضغط Ctrl X
accelerator حدث للنص اللى موجود عندى وانا بدى افرج
ما بين الشغلتين الآن ال accelerator هذا بيحتاج
دائما ل mask ال mask هو اما ال control او ال shift
او ال alt وبالتالي
انا بدى اروح احدد ال menu item اللى عندىطبعا لاحظى
جابى شوية اتكلمت على ال nominic مع ال menu و ال
menu item مش مشكلة ال accelerator مع ال menu item
لإنه فيه command انا بدي أنفذ ال command اللى وراه
set accelerator set accelerator و ال accelerator
هذا معتمد على ال keyboard طيب الآن keystroke
المفاتيح اللى انضغطت
.getkeystrokeرجعلي بالمفاتيح اللي انضغطت يعني ايش
المفاتيح اللي ممكن تنضغط keyevent.vk underscore ال
O وهذا هو ال letter اللي انا بدي اياه لو أخدت
keyevent. هديك list بكل ال characters اللي موجودة
الصفر للتسعة وال character ال الف بتاكر كما input
event عملية الإدخال بدي نعملها masking من خلال
.control mask اما هتلاقي فيه انك ال alt mask او ال
shift mask وبهيك انا صرت بتحكم بال accelerator
يعني ممكن انا اروح استخدم ال alt mask بحيث ان اضغط
Alt X تشتغل عشان ينفذ ال cut لو انا بحتاجها
وبالتالي هذه هي ال task او هذه ال accelerator
الموجودة وضروري تظهر الفرق ما بينالـ Nominic و الـ
Accelerator يعني
في الـ key event dot هدى بتحدد الحرف اللى بدى
اعمله بالضبط ال key event dot بحدد ال character
وهنا بحدد ال mask تبعتها ال mask نعم بس ال stroke
هى شوفته هنا كتيرأنا بدي أضغط على الـ keyboard،
مظبوط؟ احنا في عيننا الـ key pressed شوفناها سالقا
أنا بتكلم عليه مفتاح واحد، مظبوط ولا لأ؟ لكن لما
أنا بدي أدخل لأكتر مفتاح اللي هو mask، تمام؟
معناته، لاحظ، تبهي معايا، بينفعش أضغط أنا out أرفع
أصبعي، و بعدين أروح أضغط ال character زي ما في
حالة ال .. ال .. ال .. زي ما في حالة ال nominic في
ال nominic أنا هاي كمان مرة شوف الفرق؟وين راح ال
notepad؟ هاي Alt ورفعت إيدي، ضالت ال nominate
characters معالمة هاي H بيشتغل الحال مع ال
accelerator لأ المفتاحين مع بعض و هم ينضغطوا
وبالتالي صرت بتكلم على stroke تمام؟ إيش المفاتيح
اللي بدها؟ تنضغط عندها، فانا راح قلتله هتل
المفاتيح اللي انضغطتهو ارجع لبن بصيغة المفتاح اللي
بده ينضغط لو كان حرف ال O مع ال control معناته انا
بتكلم جاعد على مين؟ بتبقى اعمل execution لل code
او لل event او كأني بعمل بريسلا ال open item او ال
menu item اللي موجود عندها
والله مش عارف الإختصار من أين جايبينه بس هو في
الآخر هذه عبارة عن ال definition أو ال character
constant character اللي بتتعامل مع الحروف ال event
يعني مافيش عليها details حتى في ال hand exit
dot
.set keystroke احنا عندنا ال menu
item صح؟ اه .set accelerator في داخلها اكسلاراتور
اقولنا في داخل ال accelerator عند key
keystroke keystroke dot get keystroke و ال key أنا
فيه عندي hand key event key
event
dot مجموعة ال characters اللي عندنا هيهم شايفة؟
يعني حتى هو هنا مافيش description حتى مع ال IDE
عشان يقول لي إيش بس هي عبارة عن integer value و ال
integer هذا مرتبطة بكل character من ال characters
اللي موجودة احنا الآن exit معناته على سبيل المثال
بدي أحطه مع ال .. قلنا vk
vk underscore x كما
وقولنا بدنا الآن input mask input mask input
event dot control
control mask وبالتالي هذه العناصر اللي موجودة
فعليا اختصار ال VK هل هي اختصار لإيش key event
ماحطوهاش بنفس الترتيب عشان نقول key event أنا
ماعنديش علم صحيح فيها وبالتالي ماقدرش افتيلك
اختصار لإيش عن جد بس في الآخر هي عبارة عنرقم ال
character أو ال integer اللي بيعمل represent لل
character في حالة ال key event اللي موجودة عندنا
طيب ال menu item في بعض الأحيان بنشوف على ال menu
icons بنشوف مع ال menu icons يعني عند ال save بروح
بحطلي شكل ال disk صغير عند ال exit بروح بيعملني
شكل الباببروح عند الـ cut على سبيل المثال بروح
بيقول لي هي في مجص ولا لا هذه ال icons باعتمد على
وجودها في ال menu item من خلال ال constructorمن
خلال الـ Constructor Constructor أول مرة شوفناها
بال label صح؟ لحاله، بالمرة التانية شوفناها ال
label و ال nominic character و ال label هيو ال
image وبالتالي أنا بقدر أحدد ال image تبعتي اللي
بدي إياها تكون في داخل ال character أو داخل ال
menu اللي موجودة عندي هنا إذا تكلمنا على ال menuأو
ال icon مع ال menu معناته أنا ضروري أحدد ال
orientation الآن مين جاب لمين؟ النص جاب للصورة ولا
الصورة جاب للنص؟ حسب الاتجاه المفروض تتحكم فيه ولا
لأ فبالتالي بقدر أقول له أنا cut item dot set
horizontal text position horizontal text position
لحظة بتكلم علي مين؟ position تبعت مين؟ تبعت ال
textموجود على الـ left يعني على يسار ال icon اللي
موجود عندك اللي هي الصورة ال icon أحيانا
بضيف على ال menu أو بشوف في بعض ال menus الصورة
مرة واحدة بتستدعيها المفروض ك file موجود عندك على
الجهازالان في داخل ال project او في اي مسار خالد
في اي folder خارج ال project بس ممكن تزوديه
بالمسار كامل اما بتكون في داخل ال source جوار ال
java file في نفس ال folder وبهك تستدعيها بدون
المسار او بدك تحخزنيها في مسار كامل تحدد ال C على
اي folder وتعملي لها calling احيانا
بنظهر على الـ menu أحيانا بنظهر على ال menu radio
button و check box هل هذا الكلام ممكن يصير؟ أه
ممكن يصير و ال Java مفرلة Java check box menu item
و Java radio button menu item بإيش
بيفرق هذا عن السابق؟إن هذا مخصص للـ menu قالية
العمل نفس الكيفية السابقة ولا إختلاف ولا إشي في
الإختلاف وبالتالي إذا أريد ال data اللي موجودة منه
بروح من خلال اسمه readonlyitem.isselected true
باخد عليها ال action اللي أنا بديها مع ال radio
buttons ما لهم؟ أنا فيه عندى مفتاحين أو تلاتة بدي
radio groupبدي radio group عشان أضمنها أنه تشغل
وبالتالي ما ينطبق على ال check box اللي شفناها
سابقا و ال radio button و ال radio button عفوا
هينطبق على ال check box menu item و على ال radio
button menu item خلص
okayتبقى لدينا أربع أو خمس slides سأتكلم فيهم كلام
بسيط وسنعود للمرة القادمة بالتطبيق ان شاء الله
تعالى الان ال menu اللي اشتغلنا عليها menu ثابت
يعني على ال menu bar موجودة بدون تغيير ولا لا
بتغير مكانها؟ لأ الان في عندى قوائم بتظهر لما بضغط
بمفتاح الموسي اليمين مصبوط هذه بنسميها pop-upيعني
المينيو مش موجودة .. مش موجودة .. او عفوا مش
موجودة حاليا لكن انا لما بدي اياها بتظهر الآن ال
pop-up menu هذه بيلزمني فيها شغلتين عشان اظهرها
بعد .. غير ان انا بدي انشق ال menu بيلزمني ال
position اللي بدها تظهر فيه وبيلزمني ال element
اللي انا بدي اظهر مع ال pop-up
الـ GUI Element اللي بدي أظهر معاه البوباب تعالى
أقولك ليش لو أنا سألتك الآن هذه frame فاضي زي ما
في الحالة اللي عندي تماما هاي وعملت بوباب عليها
copy و cut to paste ايش بعملك عمل copy لإيش؟الأسر
كل ما أعملهم disable أو freeze مصبوط الكلام
وبالتالي أنا لازم أربط الـ element أو الـ pop-up
menu مع element اللي هو فايدة يعني هكذا، لو أنا
أجيت فوق المفتاح وضغطت بمفتاح الـ mouse اليمين،
أيش ممكن أساوي؟ فوق الـ button؟ أيش بدي أساوي؟
اكتيري اغير الـ properties تبعتي اغير الخط مثلا او
اغير اللون بس هذا الكلام مش هذا الكلام اللي بده
يصير ال pop-up menu لها مهمة ان اتسهل على ال user
الوصول لشغلات ابعيدة عنه وبالتالي دائما لازم
اربطها بشكل صحيح والربط هذا بيستدعي ان ال position
تبعه هيكون قريب من ال element اللي انا بديها بداية
انشاء ال pop-up menu في عند جي pop-up menuاللي
مثّلت عندي من البداية إيش؟ الـ Bar، خلّيني أسميها
الـ Bar، الـ Menu Bar بعد هيك بضيف عليها إما Menu
Item أو بضيف عليها Menu حسب حاجتي ومش الشغل السابق
تماما وولا إشي وبالتالي إنشائي الـ Pop-up Menu
مثله مثل الـ Menu الرئيسية باستثناء إن مش هعتمد
على Menu Barمثلها مثل المينيو الرئيسية باستثناء
اني مش هعتمد على menu bar يعني ping و saying هيك
يعني ال pop-up menu و كأنها تكافئ المينيو بار عنده
عنصر موجود في المينيو اللي انشأتها سابقا بينفع انا
اضيفه في ال pop-up menu اه بينفع لان هو already
object تم تعريفه بيكون على menu و بتقدر تكون على
menu menu item و بتقدر تضيفيه على ال pop-up menu
اللي موجود عندها
لأ ماجيبتش ولا الورق لأن انا أساسا وصلت متأخر
الجامعة يعني ماوصلتش مكتبي فاليوم مافيش حضور في حد
غايب المرة اتنين اللي فات وماجي اوج اليوم بسيط
يعنى اصلا مافيش مشكلة ان شاء الله بس بتهيأ أبو حمز
انت بحاجة انك سجلت ختام المحاضرة يعني زي ما قلنا
هنا وبالتالي انا لازم أنت بيهللـ pop-up menu
إنشائها أو الفرق الوحيد أو الاختلاف في إنشاء الـ
pop-up بين ال menu وبين ال pop-up menu ال menu
مرتبطة بال menu bar وال pop-up متنقلة أو زي
الفقاعة بتظهر في أي مكان أنا بديها وبالتالي بقدر
أقول أن ال pop-up menu أو ال J pop-up menu تكافئ
بالنسبة ليه؟الـ JMenuBar إلا غير إن الـ Pop-up
menu هذه لاحقا عشان أنا أظهرها لازم أحدد أو
أستدعيها من خلال method اسمها إذا أنا بدي أظهرها
بشكل عام في عندي method popup.show
مع أي بنى اللى بدأ تظهر ايوة و X و Y ال position
تبعتها طبعا لما X و Y نتكلم على ال X و ال Y
دياجونال لكن برضه هاد ممكن اربطها ب specific
element لما بضغط مباشرة على ال element تظهر بدون
مضطر ان اروح اقوله ايش ال show بدون ما اقوله ال
show المحاضرة اللى جاى ان شاء الله تمام هنتكلم
بتفاصيل اكثر و نحاول نشغل بعض الشغل العملي اللى له
علاقة