قواعد المشاركة في المنتدى

(قسم الاعلانات) الموضوع:خطوات شركة الصالحية لتسليك المجاري بالرياض بواسطة: (شركة الصالحية) :: (قسم الاعلانات) الموضوع:شركة الصالحية لخدمات تنظيف الخزانات بالرياض بواسطة: (شركة الصالحية) :: (قسم الاعلانات) الموضوع:أفضل مواد العزل المائي شركة الصالحية بواسطة: (شركة الصالحية) :: (قسم الاعلانات) الموضوع:اسعار شركة الصالحية لعزل الاسطح بالرياض بواسطة: (شركة الصالحية) :: (أخبار التكنولوجيا) الموضوع:راقي شرعي.. الشيخ طلال القحطاني بواسطة: (ذياد الزين) :: (قسم الاعلانات) الموضوع:خدمات شركة الصالحية لكشف تسربات المياه شمال الرياض بواسطة: (شركة الصالحية) :: (قسم الاعلانات) الموضوع:بشرى شاكر كوتش تجميل ومصففة شعر- دورات للمبتدئات والمحترفات بواسطة: (ضياء روحي) :: (منتدى الأكسس) الموضوع:شرح عمل تقرير يظهر وايام الغياب تلقائي تواريخ لم يتم تسجيل حضور فيها بواسطة: (hanymajdy) :: (قسم التطوير والاقتراحات) الموضوع:نقل عفش بالدمام نقل اثاث بالدمام بواسطة: (fareskingdom) :: (قسم الاعلانات) الموضوع:المجلة العربية للعلوم و نشر الأبحاث بواسطة: (bensamy) :: (منتدى الوورد والباور بوينت) الموضوع:راقي شرعي الشيخ طلال القحطاني بواسطة: (منهل المعرفه) :: (قسم الاعلانات) الموضوع:شركه تسليك مجاري بالكويت بواسطة: (اسماء عومر) :: (قسم الاعلانات) الموضوع:نصائح شركة تنظيف مكيفات الهواء الاسبليت بواسطة: (فارس اسلام) :: (منتدى برمجة الشبكات في بيئة الدوت نت) الموضوع:تعليم الشبكات مع دبلومة الشبكات Network Diploma على 5 اسطوانات بواسطة: (Vahid99) :: (منتدى الدعم الفني للماسنجر المحيط العربي) الموضوع:Sons Of Anarchy DVD بواسطة: (Vahid99) :: (منتدى Borland Delphi) الموضوع:تعرف على قواعد بيانات FireBird بواسطة: (Vahid99) :: (منتدى نظام تشغيل Linux) الموضوع:برنامج بلغة السي في اللينكس بواسطة: (Vahid99) :: (قسم الاعلانات) الموضوع:وكاله شهاب للأنباء Shehab news agency بواسطة: (اسماء عومر) :: (قسم الاعلانات) الموضوع:أسعار العملات و الذهب اليوم في العالم العربي بواسطة: (ضياء روحي) :: (منتدى ال SQL العام) الموضوع:إستعلام جدولين بواسطة: (araby-10)

المواضيع المثبته: (منتدى Borland Delphi) الموضوع:تحويل الأرقام إلى نص بواسطة: (مهند عبادي) :: (منتدى أنظمة الشبكات وأمنها) الموضوع:أساسيات تصميم الشبكات بواسطة: (مرحبا الساع) :: (كتب عن VB.NET) الموضوع:كتب VB.NET عربي بواسطة: (عبد الرحمن) :: (منتدى برمجة الألعاب) الموضوع:مقدمة في برمجة الـ (3D) الألعاب...جـ2 بواسطة: (NubiaPrince) :: (منتدى الوورد والباور بوينت) الموضوع:برنامج عملاق باللغة العربية بواسطة: (هنوشه) :: (منتدى Microsoft Excel) الموضوع:شرح دوال الاكسيل كلِ على حده بواسطة: (ramies) :: (منتدى تصميم صفحات الويب) الموضوع:أرشيف الدروس المصورة بواسطة: (alanees) :: (منتدى مبرمجي Microsoft Visual C#.NET) الموضوع:Serial Communication with Csharp بواسطة: (Prof.Mendl) :: (منتدى Microsoft Visual Basic) الموضوع:دورة التعامل مع Data Report باستخدام ADODC ( شرح بالصور ) بواسطة: (Max Bayne) :: (منتدى أجاكس(Asynchronous JavaScript and XML)) الموضوع:تقسيم النتائج لعدة صفحات مع 3 لغات برمجة ويب بواسطة: (عبدالله جابر شقليه) :: (كتب عن VB.NET) الموضوع:مكتبة مرفقات الدوت نت (المحيط العربى) بواسطة: (alaa gomaa) :: (منتدى Microsoft Visual Basic) الموضوع:حصريا Microsoft Visual Studio 6.0 كاملة بواسطة: (Max Bayne) :: (منتدى C و C) الموضوع:برنامج من سيربح المليون بواسطة: (مصطفي البارودي) :: (قسم التعاميم والشكاوي) الموضوع:شروط المشاركة في المنتدى بواسطة: (عبدالله جابر شقليه) :: (قسم الدروس و الدورات) الموضوع:المواضيع والدروس التعليمية في الدوت نيت - ابدأ من هنا بواسطة: (fmo_82) :: (منتدى Microsoft SQL Server) الموضوع:تابعوا دروس sql2000 بواسطة: (dody) :: (منتدى أنظمة الشبكات وأمنها) الموضوع:طريقة عمل شبكة لاسلكية بين جهازين او أكثر ..اكس بي.. لمشاركة الملفات والإنترنت بواسطة: (مرحبا الساع) :: (منتدى Microsoft Visual Basic) الموضوع:أكبر مشاركة فيجوال بيسك بواسطة: (SkyLight) :: (منتدى مبرمجي لغة جافا JAVA) الموضوع:برنامج للموبايل بلغة الجافا للبحث على جوجل بواسطة: (Doctors) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:بعض ميزات أوركل 10g بواسطة: (وليد القدسي)

إضافة رد إضافة موضوع جديد

> شرح أبسط طريقة لعمل GUI بواسطة الكود
Bookmark and Share
تقييم الموضوع Label معدل التقيم:0
مشاركةالأحد,22/ربيع الثاني/1432 هـ,12:21 صباحاً
المشاركة #1

الرتبة في المنتدى:ملازم

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 85
سجل في:الاثنين,25/ربيع الأول/1432 هـ,05:47 صباحاً
الدولة:فلسطين
رقم العضوية: 97508



مرحبا يا جماعة ، إنشاء الله تكونو بخير

بصراحة من أكتر الأمور الرائعة في أي منتدى هي روح التعاون و المشاركة ، و أنا حبيت أشرح شي بالجافا يمكن الكثير بيعرفوا لكن أيضا الكثير لأ ، و هادا من باب نشر المعرفة على قدر المعرفة ، و نتوكل على الله .



بسم الله :

بداية أود التحدث عن الواجهات Interfaces :
GUI : هي اختصار لـ( Graphical User Interface ) واجهة المستخدم الرسومية ، و هي ببساطة التي يتعامل معها المستخدم حتى يتفاعل مع الحاسوب و يتعامل معه ليجعله ينفذ له الخدمات التي يريدها ، هذه الواجهات تتكون من عناصر كثيرة ، نوافذ و أزرار و قوائم و ما إلى ذلك و هذه المكونات تستجيب للأحداث التي يقوم بهال المستخدم كنقره بزر الماوس على الزر و ما إلى ذلك من أحداث أخرى ، و هي سهَلت العمل كثيرا جدا على الحاسوب ، حيث لم نعد بحاجة إلى كتابة الأوامر الطويلة لأداء مهمة ما ، إضافة إلى أنها أكثر تقبلا للمسختدم ، لن أطيل أكثر فالحديث عن هذا الموضوع لا ينتهي.

أولا : قبل تصميم الواجهة interface
قبل أن أبدأ في تصميم الـ interface يجب أن أحدد كيف سيكون شكلها و ماذا سوف تحوي ، بالتالي يجب أن يكون لدي علم مسبق بالعناصر المكونة للـ interface و تسمى components و هي كثيرة يتم استخدامها طبقا للحاجة مثل :

. Button الأزرار ، TextField مربع النص ، و غيرها من الـ components الأخرى ، و بما أننا ندرس الـ components في الـ packagejavax.swing فالـ components في هذه الـ package تكون أسماء الـ classes الخاصة بنفس اسمها مسبوقة بحرف J كالتالي:

. JButton , JTextFiled , JLabel , JCheckBox , JRadioButton , JComboBox , JList و غيرها من الـ components الأخرى و هذه صورة توضح بعضها :





و يمكن لمن يريد معرفتها الاطلاع عليها في أي كتاب من كتب البرمجة بلغة JAVA أو من مواقع الانترنت الكثيرة في هذا المجال ، و طبعا يجب أن حدد ما أحتاجه منها فمثلا على فرض أنني أريد إنشاء interface لإضافة موظف جديد للشركة التي أعمل بها ، إذا أحتاج TextField لأضافة اسم الموظف و آخر لتاريخ ميلاده الخ و احتاج Button للحفظ و آخر لإلغاء العملية و بالنسبة لتحديد جنس الموظف ممكن أستخدم RadioButons أو ComboBox و هكذا.




ثانيا : بدأ إنشاء الـ interface
أولا يجب استدعاء الـ classes التي سنستخدمها لأنشاء الـ interface من الـ packages التي تحويها و ذلك في بداية البرنامج (و هذا الأمر ينطبق على أي class عموما) فمثلا لو أريد إضافة Button (زر) للـ interface نستدعي الـ classJButton في البداية كالتالي

import javax.swing.JButton;

و نفس الشيء للـ TextField

Import javax.swing.JTextField;

أو يمكنني استدعاء الـ package كاملة بكل الـ classes التي فيها كالتالي

Import javax.swing.*;



ثانيا: يجب إنشاء الإطار الذي يحوي هذه الـ components و هو الـ Frame و يكون ذلك في العادة عن طريق جعل الـ class الذي سينشئ الـ interface يتورث الـ classJFrame ( و يمكن أيضا عن طريق اشتقاق object من هذا الـ class و غير ذلك ) و لكن لنتبع طريقة واحدة الآن كالتالي:

طبعا أول سطر شرحناه سابقا ، بعد ذلك بدأنا الـclass ثم نبدأ بإنشاء الـinterface عادة داخل الـconstructor

و هو هنا
public Employee()

 {



في داخل الـconstructorالـmethod
setSize(600,650);


تأخذ أبعاد الـFrame التي سيظهر بها على الشاشة و هذه الـmethod مجودة أصلا في الـclass الذي ورثناه و هو JFrame و بذلك استطعنا استدعاءها (طبعا هذا الموضوع في الوراثة inhiretance و ليس موضوعنا الآن) ، و يمرر لها أولا العرض ثم الطول

و الـmethod
setVisible(true);[/CODE

هذه الـmethod نستدعيها حتى يظهر الـFrame و ذلك لأننا مررنا لها true و لو نردي إخفاء الـFrame نستدعيها أيضا و نمرر لها قيمة false فيختفي الـFrame .

 

طبقا للكود السابق يظهر الـFrame في الزاوية العليا للشاشة و لو نريد تحديد مكانه على الشاشة نستدعي الـmethod التالية
[CODE language="CS"]setLocation(200,60);




و نمرر لها احداثيات النقطة على الشاشة التي سيوضع فيها الزاوية العليا اليسرى للـFrame حيث الإحداثيات على الشاشة تبدأ من الزاوي العليا اليسرى التي تكون (0,0) و كلما مشينا يسارا زادت قيمة x الذي يمثل المحور الأفقي و كلما مشينا للأسفل زادت قيمة y الذي يمثل المحور الرأسي.



بهذا نكون أنشأنا الـFrame و نستطيع أن نضيف له ما نشاء كالتالي:

أولا يجب أن نعرف أن قلب الـFrame و إن كان جزءا منه فهو عبارة عو حاوية توضع عليها الـcomponents و هذه الحاوية يمثلها class يسمى Container ، بالتالي حتى نتعامل معه يجب استدعاؤه من الـpackage التي يوجد بها و هي java.awt و الاستدعاء يكون في البداية كما قولنا ، إذا نضيف الجملة التالية في بداية البرنامج
import java.awt.Container;


و حتى نتعامل معه بيسر يستحسن أن نوجد مؤشر reference عليه باستدعاء الـmethod التالية getContentPane() و ذلك كالتالي:

Container cont=getContentPane();





بعد ذلك يجب أن نحدد طريقة ترتيب الـcomponents على الـcontainer ، و يوجد لهذا الغرض classes متعددة تقوم بترتيب العناصر تلقائيا مثل FlowLayout , BorderLayout , GridLayout و غيرها الكثير و لكن نحن الآن لسنا في المرحلة المناسبة لحديث عنها ، بالتالي سنقوم بترتيب الـcomponents بأنفسنا ، إذا سنستدعي الـmethod الخاصة بذلك في الـcontainer و نمرر لها قيمة null كالتالي:

cont.setLayout(null);



وبعد ذلك لأضافة أي component للـinterface نضيفه للـcontainer كالتالي:

cont.add(هنا نمرر العنصر المراد إضافته);





الآن لإضافة عنصر ما component يجب

أولا إنشاؤه و تحديد خصائصه ثم

ثانيا تحديد حجمه أو أبعاده و تحديد موقعه على الـinterface



لإنشاء component نشتق من الـclass الخاص به object و لو كان هذا الـcomponent يحوي نصا يمرر هذا النص عند إنشائه ، فمثلا لو أريد إنشاء Button و عادة الـButton يكون عليه نص أمرر هذا النص عند إنشائه وليكن هذا النص مثلا هو save نقوم بالتالي:

JButton btn=new JButton("Save");


هكذا أنشأته و وضعت عليه نص و يمكنني أن أحدد الخصائص التي أريدها له كتغيير لو النص و نوع الخط أو إضافة له icon و ما إلى ذلك من الخصائص الأخرى ،

ثانيا نحدد أبعاده و موقعه كالتالي
btn.setBounds(20,30,100,50);


حيث نمرر على الترتيب موقعه بالنسبة لـX ثم بالنسبة لـY ثم مقدار عرضه ثم مقدار طوله حيث موقعه المحدد يوضع فيه الزاوية العليا اليسرى و يبدأ منها عرضه على امتداد X و طوله على امتداد Y



مع نهاية الأمر يكون الكود لدينا كالتالي
import javax.swing.*;
import java.awt.Container;

public class Employee extends JFrame

{

 public Employee()

 {

  setSize(600,650);

  setVisible(true);

  setLocation(200,60);

 

  Container cont=getContentPane();

  cont.setLayout(null);

 

  JButton btn=new JButton("Save");

  btn.setBounds(20,30,100,50);

  cont.add(btn);

 }

}




الآن كل عنصر نريد إضافته نفعل نفس الأمر مثلا نريد إضافة Label و TextField كالتالي
import javax.swing.*;

import java.awt.Container;

public class Employee extends JFrame

{

 public Employee()

 {

  setSize(600,650);

  setVisible(true);

  setLocation(200,60);

 

  Container cont=getContentPane();

  cont.setLayout(null);

 

  JButton btn=new JButton("Save");

  btn.setBounds(20,30,100,50);

  cont.add(btn);

 

  JLabel lbl=new JLabel("Name");

  lbl.setBounds(20,100,50,20);

  cont.add(lbl);

 

  JTextField tf=new JTextField();

  tf.setBounds(90,100,240,20);

  cont.add(tf);

 }

}





هكذا نكون انتهينا تقريبا بقي أن نطبق مثالا بسيطا:
على فرض أننا نريد إنشاء interface لإضافة موظف جديد للشركة كالـ interface التالية:


يكون الكود كالتالي:
import javax.swing.*;
import java.awt.Container;

public class Employee extends JFrame
{
 public Employee()
 {
  setSize(500,450);
  setVisible(true);
  setLocation(200,60);
  
  Container cont=getContentPane();
  cont.setLayout(null);
  
  JLabel tLabel=new JLabel("Adding Employee");
  tLabel.setBounds(190,20,150,20);
  cont.add(tLabel);
  
  
  JLabel nameLabel=new JLabel("Employee Name");
  nameLabel.setBounds(20,80,110,20);
  cont.add(nameLabel);
  
  JTextField nameTF=new JTextField();
  nameTF.setBounds(140,80,240,20);
  cont.add(nameTF);
  
  
  JLabel numberLabel=new JLabel("Employee Number");
  numberLabel.setBounds(20,110,110,20);
  cont.add(numberLabel);
  
  JTextField numberTF=new JTextField();
  numberTF.setBounds(140,110,240,20);
  cont.add(numberTF);
  
  
  JLabel phoneLabel=new JLabel("Phone Number");
  phoneLabel.setBounds(20,140,110,20);
  cont.add(phoneLabel);
  
  JTextField phoneTF=new JTextField();
  phoneTF.setBounds(140,140,240,20);
  cont.add(phoneTF);
  
  
  JLabel genderLabel=new JLabel("Gender");
  genderLabel.setBounds(20,170,110,20);
  cont.add(genderLabel);
  
  JRadioButton maleRB=new JRadioButton("Male");
  maleRB.setBounds(140,170,120,20);
  cont.add(maleRB);
  
  JRadioButton femaleRB=new JRadioButton("Female");
  femaleRB.setBounds(260,170,120,20);
  cont.add(femaleRB);
  
  
  String departments[]={"Accounting Department","Sales Department","Manufacturing Department","IT Department"};
  
  JLabel departmentLabel=new JLabel("Department");
  departmentLabel.setBounds(20,200,110,20);
  cont.add(departmentLabel);
  
  JComboBox departmentCB=new JComboBox(departments);
  departmentCB.setBounds(140,200,240,20);
  cont.add(departmentCB);
  
  
  JButton saveBtn=new JButton("SAVE");
  saveBtn.setBounds(100,310,110,20);
  cont.add(saveBtn);
  
  JButton cancelBtn=new JButton("CACEL");
  cancelBtn.setBounds(240,310,110,20);
  cont.add(cancelBtn);
 }
}


و طبعا للاختبار نشتق object هذا الـclass ، مثلا ببساطة نضيف الـ()method main ،
إلى الـclass و نشتق منه object داخلها

public static void main(String args[])
	{
		Employee app=new Employee();
	}


و بهذا نكون أتمينا هذا الشرح بحمد الله ، راجيا الله التوفيق للجميع ، و أي استفسار لا تترددو.
و كل التحية لعيون المنتدى أعضاؤه الكرام.


الملفات المرفقة
 Interface Example.rar ( 0.78ك ) عدد مرات التنزيل: 633


--------------------

مثل الجاهل و العالم كمثل الأعمى و البصير

للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالأحد,22/ربيع الثاني/1432 هـ,02:59 صباحاً
المشاركة #2

الرتبة في المنتدى:ملازم

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 85
سجل في:الاثنين,25/ربيع الأول/1432 هـ,05:47 صباحاً
الدولة:فلسطين
رقم العضوية: 97508



يوجد جزئية حدث خطأ ، فأحببت إيضاحه ابتداءًا من السطر التالي

في داخل الـconstructorالـmethod
setSize(600,650);


تأخذ أبعاد الـFrame التي سيظهر بها على الشاشة و هذه الـmethod مجودة أصلا في الـclass الذي ورثناه و هو JFrame و بذلك استطعنا استدعاءها (طبعا هذا الموضوع في الوراثة inhiretance و ليس موضوعنا الآن) ، و يمرر لها أولا العرض ثم الطول

و الـmethod
setVisible(true);


هذه الـmethod نستدعيها حتى يظهر الـFrame و ذلك لأننا مررنا لها true و لو نريد إخفاء الـFrame نستدعيها أيضا و نمرر لها قيمة false فيختفي الـFrame .



طبقا للكود السابق يظهر الـFrame في الزاوية العليا للشاشة و لو نريد تحديد مكانه على الشاشة نستدعي الـmethod التالية
setLocation(200,60);


و نمرر لها احداثيات النقطة على الشاشة التي سيوضع فيها الزاوية العليا اليسرى للـFrame حيث الإحداثيات على الشاشة تبدأ من الزاوي العليا اليسرى التي تكون (0,0) و كلما مشينا يمينا زادت قيمة x الذي يمثل المحور الأفقي و كلما مشينا للأسفل زادت قيمة y الذي يمثل المحور الرأسي.

و الباقي كما هو إن شاء الله العلي القيدر.


--------------------

مثل الجاهل و العالم كمثل الأعمى و البصير

للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالجمعة,08/ربيع الأول/1440 هـ,05:37 مساءً
المشاركة #3

الرتبة في المنتدى:ملازم



المجموعة: الزوار
المشاركات: 109
سجل في:الخميس,16/محرم/1429 هـ,12:16 صباحاً
الدولة:أنتيغوا وباربودا
رقم العضوية: 0





--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالسبت,01/شعبان/1440 هـ,07:13 مساءً
المشاركة #4

الرتبة في المنتدى:ملازم

أيقونة المجموعة

المجموعة: أعضاء فعالين
المشاركات: 110
سجل في:السبت,01/شعبان/1440 هـ,06:37 مساءً
الدولة:مصر
رقم العضوية: 113802



موضوع مفيد


--------------------
عندما نفكر دائمًا في خزانة وخزانة جانبية شركات نقل اثاث بالقاهرة، فإن الفكرة التي تظهر في أذهاننا ستكون مرتبطة ببيئة نظيفة وخالية من الفوضى في غرفتنا. ولكن ، هل تساءلت يومًا كيف يمكن أن تكون غرفة الطعام غير مرتبة وغير منظمة عندما لا يكون لديك خزائن فيها؟ شركات نقل الاثاث بالقاهرة إلى جانب المظهر غير الصحي صحتك تهمنا
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالثلاثاء,06/رمضان/1441 هـ,10:55 صباحاً
المشاركة #5

الرتبة في المنتدى:رقيب

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 11
سجل في:الاثنين,05/رمضان/1441 هـ,05:43 مساءً
الدولة:أثيوبيا
رقم العضوية: 115801



مرحبا
هذا جيد جدا ومثالي ، استخدمته.
شكرا جزيلا للمساعدة والأدلة الخاصة بك.

best programming


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة

    

عدد المتصفحين لهذا المنتدى «1»: (الضيوف «1» - المتخفون «0»)
الأعضاء «0»: .

إضافة رد جديد إضافة موضوع جديد



 
الوقت الأن:اليوم,03:31 صباحاً بتوقيت القدس المحتلة

Powered By arabmoheet v3.1

منتديات المحيط العربي  -  راسلنا  -   أعلى
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)