النتائج 1 إلى 15 من 16
- 17-03-2020, 04:46 PM #1
ربط منصة الرياض المالية- بالميتا تريدر -بدوكاسكوبي(JAVA SWINGS/APPLETS)
بسم الله الرحمن الرحيم
اعتبره تطبيق على موضوع مبادئء الجافا القائم حالياً
الفكرة: نريد تصميم تطبيق يجعل المنصات الثلاث(منصة TWS --- منصة MetaTrader - منصة JForex) تتفاهم مع بعض اما بيانات مجردة او أدوات تفاعلية--مثلا وضع أوامر او حذفها - الخ
يعني نريد شيئا كما في الصورة أسفل:
بالتأكيد يمكن إعادة تصميمها باللغات الأخرى الأشهر سواء بايثون او سي++ او سي شارب
--
على فرض اخترنا الجافا لغة برمجة, وهي دائما الأفضل عند المقارنة مع أي لغة أخرى, فأنت تحتاج بعد اساسيات الجافا تتعلم:
Java Swing
Java awt
Java sockets
الخ
تركيزنا هنا ليس على فكرة التطبيق نفسه ولكن على البنية التحتية التي تصلح لأي تطبيق.
آخر تعديل بواسطة سلمان_العتيبي ، 17-03-2020 الساعة 05:06 PM
- 17-03-2020, 05:34 PM #2
الدرس 01 من 87) JFrame Class
طالما انها كلاس---اذن هي نوع-- وطالما انها نوع اذن تستخدم لـ 1) تعريف و 2) انشاء الكائنات والتي بدورها تتواصل مع المتغيرات والدوال التي لها علاقة بتصميم فريم(دقق في كلامي جيداً) -- نفس الكلام الذي كرناه كثير في الموضوع الأول.
الفريم: هو مثل الحائط الخلفي الذي نضع عليه بقية الأشياء
- لايمكن ان تعلق ورقة على حائط هوائي!
-
اقل اسطر برمجية ممكنة لرؤية فريم على الشاشة امامك سطرين:
1) سطر انشاء الكائن من نوع JFrame و 2) سطر دالة جعله مرئيا --دالة setVisible ونعطيها قيمة true
كود:JFrame new_frame = new JFrame("ArabicTrader"); new_frame.setVisible( true);
عند الحفظ ثم الكمبلة للكود أعلاه
الناتح ظهور ويندوز جديدة وعنوانها ArabicTrader
ولكن بأقل مقاس حيث لن ترى عنوان الفريم الا اذا كبرته بالماوس على اطراف الفريم.
انظر للصورة:
آخر تعديل بواسطة سلمان_العتيبي ، 17-03-2020 الساعة 05:37 PM
- 17-03-2020, 05:45 PM #3
تمرين الدالة setVisible في المثال أعلاه, بقيمة true -- غيرها الى false -- مالذي سيحدث؟
ج: سينشئ البرنامج الفريم(لأنك استخدمت new JFrame() c) ولكنه مخفي ولن تراه لأنك انت وليس غيرك قرر ان لايكون مرئياً.
وبناء عليه أي فريم في الدنيا يبدأ new JFrame وينتهي بـ setVisilbe ولو كان هناك الف محتوى فإن جميع اسطرها البرمجية تكون بين اسلرطين السابقين
ركز جيداً, setVisible لازم تكون آخر شيء
تصور انك قررت رسم مربع على الفريم! وكان سطر دالة الرسم بعد سطر setVisible ؟؟
لن ترى هذا المربع! ورقة خلف الحائط!! لن تراها!آخر تعديل بواسطة سلمان_العتيبي ، 17-03-2020 الساعة 05:48 PM
- 17-03-2020, 05:53 PM #4
الدرس 02 من 87) مقاسات الفريم
البرنامج السابق قلنا سيظهر بأقل مقاس ولن ترى عنوان الفريم الا اذا مغطته بالماوس,
برمجيا يمكن اعطاء مقاسات اولية للفريم --فهو في الاخير مجرد طول وعرض و س و ص
دالة setBounds تقوم بهذا الأمر, نغذبها بأربعة قيم,
1- بدء محور الصادات على الشاشةة
2-بدء محور الصادات على الشاشة
-3 العرض الافقي
4-الطول الرأسي-
-
كود:new_frame.setBounds(20, 20, 500, 200);
للأهمية: هدفنا من الاخر, نرسم الفريم ثم نرسم عليه اشياء اخرى ثم نمنحها الحياة, مثلا رسمت دائرة على الفريم-- لامعنى لها الا اذا كن قرارك انه بعد الضغط على تلك الدائرة سيفتح امر شراء لليورو دولار مثلا مع الرياض المالية (ضغطك هنا بين ان هذا المربع تفاعلي وفيه عرق حياة) او سيجلب لك التكات لاي زوج محدد الخ! اشياء لاحصر لها!آخر تعديل بواسطة سلمان_العتيبي ، 17-03-2020 الساعة 06:05 PM
- 17-03-2020, 06:07 PM #5
ففي الكود اعلاه ترى 20 ثم 20 ثم 500 ثم 200
والزوج المرتب 0,0 هو المكان على شاسة جهازك او لابتوبك, اعلى اقصى اليسار!
سترى الفريم متحرك منه يمين 20 بكسل ومتحرك تحت 20 بكسل وبعرض 500 بكسل وطول 200 بكسل
من فوق لتحت 200
من يسار الى يمين 500
مزاحا للاسفل 20 ومزاحا ييمين 20
تمرين: مستخدما نفس الكود السابق, جرب تغيير المعطيات الأربعة وانظر للتأثير بعد الكمبلة؟
تمرين لو استخدمت قيمة X --اول معطى -- بقيمة 2000 -- اين سترى الفريم ؟
في الحالة أعلاه اصبحنا رى العنوان للفريم وهي كلمة ArabicTrader دون الحاجة للمغط بالماوس.
-
انت الان درجتك 2 من 87 في فهم هذه الأمور حيث تعرف:
1) انشاء كائن فريماوي JFrame
2) استخدام دالة setVisible
3) استخدام دالة setBounds
4) استيراد الكلاس ذي العلاقة javax.swing.JFrame
-- 0.50 درجة لكل فقرة.
تمرين: هل يعني لك بدء الدول بكلمة set شيئا؟
تمرين: ماهو نقيض دوال set ؟؟آخر تعديل بواسطة سلمان_العتيبي ، 17-03-2020 الساعة 06:19 PM
- 17-03-2020, 06:35 PM #6
ومن الآن ولاحقا أي متغير نضعه باستخدام دوال set سنطلب معرفته من خلال دوال get
اذا تذكرفي الموضوع الأول قلنا دوال get تبدأ بكلمة get وقد تبدأ أيضا بكلمة is لو كانت قيمتها منطقية boolean
مثلا setVisible اعلاه نتوقع نقيضها اما getVisible او isVisible
الصحيح منهما: isVisible لأنها دالة منطقية.
دالة setBounds نقيضها هو getBounds
ولأن هذه الدوال الأخيرة مجرد قيم نريد معرفتها في الكونسول ولادخل لها بتصميم الفريم لابأس ان تكون بعد سطر setVisible
مثلا سألتك ما اسم الفريم؟ ثم اجبتني!! هل نحن هكذا تدخلنا في تصميم الفريم او تغيير اعدادته!!؟ ج: لا
ودوال get قد تكون أحيانا أدوات مساعدة في اتخاذ قرار معين, مثلا فريم موجود بمقاس 200 عرض, وانت لاتريد المقاس ان يكون اقل من 300
تبحث أولا عن مقاس الفريم الموجود ثم ترى هل هو اقل من 300 فتعدله ام فوق 300 فتتركه كما هو--مجرد مثال ليس الا--يهمنا هنا فقط انها الأداة الصحيحة لمعرفة المعلومة.
-
وبناء عليه ومع كل إضافة سنستخدم أيضا دالة println لعرض الناتج لأسباب تعليمية بحتة لادخل لها بالتطبيق.آخر تعديل بواسطة سلمان_العتيبي ، 17-03-2020 الساعة 06:43 PM
- 17-03-2020, 06:51 PM #7
الدرس 03 من 87) دالة اكتشاف مقاسات الفريم ونقطة بدئه
نستخدم دالة getBounds()s
الدرس 04 من 87) دالة معرفة هل الفريم مرئي أم مخفي.
نستخدم دالة isVisible()f
انظر للصورة:
هل لاحظت عبارة java.awt.Rectangle
؟
يعني أن getBound هنا. صحيح انه تم استدعاؤها في سطر println اعلاه من خلال متغير من نوع JFrame --- اسم المتغير حسب الصور السابقة اخترناه باسم new_frame ولكن هناك علاقة مع الكلاس Rectangle الموجود في java.awt
وطبعا نحن نعرف القيم او النواتج أعلاه سلفا لأننا نحن من وضعها أساسا, ولكن اردنا بيان هذه الدوال. مع العلم انه اخذها من الفريم المرسوم ولم يأخذها من البرنامج نفسه. (الفريم المرسوم اخذها من البرنامج)آخر تعديل بواسطة سلمان_العتيبي ، 17-03-2020 الساعة 06:58 PM
- 18-03-2020, 03:51 PM #8
الدرس 05 من 87) دالة setLocation
وهي هنا تحديد x,y --- يعني اول عنصرين في دالة setBounds
الدالة العكسية هي getLocation
الدرس 06 من 87) دالة setSize
وهي هنا تحديد المقاسات طول وعرض -- اخر عنصرين في دالة سثفلاخعىيس
فإذا استخدمت setBounds فهي تعادل استخدام هاتين الدلتين أعلاه.
الدالة العكسية هي getSie
الدرس 07 من 87) دالة setTitle
عنوان الفريم في الأعلى ممكن تضعه او تعدله باستخدام هذه الدالة
سنغيره من ArabicTrader-1 الى ArabicTrader-2
الدالة العكسية - دالة المعرفة - هي getTitle
الدرس 08 من 87) دالة setName
اسم الفريم
لكل فريم اسم ونرجو عدم اللخبطة بينه وبين العنوان في الدرس السابق.
الدالة العكسية getName
- 18-03-2020, 03:54 PM #9
يمين الصورة ترى نقطة البدء Locatiom موجودة اساسا في الكلاس Point في java.awt
بينما الابعاد في الكلاس Dimention تحت java.awt
وكلا الكلاسين يشكلان الكلاس الاكبر Rectangle الموجود تحت نفس البكج java.awt
المستطيل ماهو؟
الفريم مستطيل وهو مجرد نقطة وابعاد-نقطة بدء رسم المستطيل وابعاده طول وعرض
فالمستطيل Rectangle يأخذ النقطة من Point والابعاد من Dimension
ناتج الكود أعلاه شيء كهذا:
- 18-03-2020, 03:57 PM #10
- 18-03-2020, 04:13 PM #11
وهنا انت تذهب لاعدادات النظام لديك OS --- خارج الجافا, وتعدلها وبالتالي الاسطر ذات العلاقة ممكن تكون قبل سطر تعريف الكائن من نوع JFrame
ولابد من استيراد:
كود:import javax.swing.UIDefaults; import javax.swing.UIManager;
كود:JFrame.setDefaultLookAndFeelDecorated(true); UIDefaults uiDefaults = UIManager.getDefaults(); uiDefaults.put("activeCaption", new javax.swing.plaf.ColorUIResource(Color.blue)); uiDefaults.put("activeCaptionText", new javax.swing.plaf.ColorUIResource(Color.yellow));
JFrame.setDefaultLookAndFeelDecorated(true);
وهذه الامور لكي يقبلها البرنامج لابد من دالة الديكور setDefaultLookAndFeelDecorated
اترك السطر الأول فقط من الاسطر الأربعة أعلاه--سيكون هناك ديكور من غير تغيير الوان:
آخر تعديل بواسطة سلمان_العتيبي ، 18-03-2020 الساعة 04:18 PM
- 18-03-2020, 04:16 PM #12
ملخص كل ماسبق:
كود:import java.awt.Color; import javax.swing.JFrame; import javax.swing.UIDefaults; import javax.swing.UIManager; public class ArabicTRDR { public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); UIDefaults uiDefaults = UIManager.getDefaults(); uiDefaults.put("activeCaption", new javax.swing.plaf.ColorUIResource(Color.blue)); uiDefaults.put("activeCaptionText", new javax.swing.plaf.ColorUIResource(Color.yellow)); JFrame new_frame = new JFrame("ArabicTrader-1"); new_frame.setBounds(20, 20, 500, 200); new_frame.setLocation(21,22); new_frame.setSize(501,201); new_frame.setTitle("ArabicTrader-2"); new_frame.setName("AlOtaibi"); new_frame.setVisible( true); System.out.println("\n\ngetBounds "+new_frame.getBounds()); System.out.println("isVisible "+new_frame.isVisible()); System.out.println("getSize "+new_frame.getSize()); System.out.println("getLocation "+new_frame.getLocation()); System.out.println("getTitle "+new_frame.getTitle()); System.out.println("getName "+new_frame.getName()); } }
- 18-03-2020, 04:19 PM #13
وهناك أشياء كثيرة عن الفريم ولكن نتركها لكم كباحثين طالما JavaApi تملأ النت.
في الموضوع الأول تحدثنا عن البرنامج الخطير--كشاف كل محتويات أي كلاس او أي انترفيس.
وكان من نهاية امرنا هناك اننا صممناه على مفهوم السورتنق او الترتيب الابجدي من اجل سهولة البحث.
وننتقل الى components الفريم. (ايش ممكن نحط على الفريم)
هل نضع نصا
هل نضع ليبل
هل نضع صورة
هل نضع فيديو
هل نضع دروب-داون مينيو؟؟
الخ
- 18-03-2020, 04:32 PM #14
سنمسح كل شيء ونترك اهم شي في الكود الاخير يعني سيبقى هذا:
الملف المرفق 521635
- 12-04-2020, 06:19 PM #15
لو تعمل لنا شرح بالفيديو بصراحة منصتهم مافهمت منها شي