الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مكونات Components متخصصة

بدأه Mahmoud Kelany في 21 مايو 2010 · 24 رد · 3,468 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته

اولا انا فكرت كتير فالعنوان ولكن لم اجد غير ان اكتبه باللغه الانجليزيه

ولو الاشراف اراد تغير العنوان فليفعل ذلك

ثانيا وهذا هو المهم

العنوان بيتكلم عند مكونات ليست متاحه بالـnetbeans

عندما تريد اضافه ImagePanal

وليست panal عاديه فلا تجد خاصيه تمكنك من ذلك

فهذه الـImagePanal تمكنك من اضافه صوره على الـPanal العاديه

ويمكن اضافاتها الى القائمه الموجوده فى الـnetbeans Palette

واستخدامها فى مشروعك

الكود فى المرفقات

وهذه صوره توضح المثال

imagepanal.jpg

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

دعنا نرى شىء اخر

انظر الى تلك الصوره

فتجد ان المكونات قد اخفت خلفيه الصوره

untrancparentpanal.jpg

فعندما نريد ان نجعل الخلفيه شفافه حيث عندما نضع عليها المكونات مثل Labal ,TextField , ....

انظر الى تلك الصوره ليتضح الامر

transparantpanal.jpg

فليس هناك داله او غيرها تجعل الـ Panal شفافه

فهذا ايضا Panal مضاف اليها خاصيه الشفافيه

ويمكن اضافاتها الى القائمه الموجوده فى الـnetbeans Palette

واستخدامها فى مشروع اردت

والكود ايضا بالمرفقات

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

عندما نريد من المستخدم الا يدخل غير ارقام فى الـ TextField فنبحث عن خاصيه من خواص الـTextField

لكى نتمكن من ادخال ارقام فقط فلم نجد ذلك

ولكن هناك مكون اضافى ممكن اضافته لكى نتمكن من استخدامه فى اى مشروع ويمكنا من ادخال ارقام فقط

والكود بالمرفقات

اتمنى ان الموضوع يكون مفيد كما اتوقع

سلام عليكم

ImagePanel.java

TransparentPanel.java

NumericTextField.java

تم تعديل هذه المشاركة بواسطة علاء الصالحي في 24 مايو 2010 في 22:20

7

Software Developer
Mahmoudkelany.com


 

#2

شكرا لك اخي الكريم على هذا الموضوع

ملاحظة

Eng.Hamzawy كتب:

عندما نريد من المستخدم الا يدخل غير ارقام فى الـ TextField فنبحث عن خاصيه من خواص الـTextField

لكى نتمكن من ادخال ارقام فقط فلم نجد ذلك

ولكن هناك مكون اضافى ممكن اضافته لكى نتمكن من استخدامه فى اى مشروع ويمكنا من ادخال ارقام فقط

والكود بالمرفقات

هنا انت لست بحاجة الى انشاء مكون جديد يرث من JTextField

فالموضوع متعلق بـ PlainDocument

قم باعادة كتابه هذا الكائن فقط

مثال على ما ذكرت

JTextField textfield1 = new JTextField(15);
	    textfield1.setDocument(new PlainDocument(){
			private static final long serialVersionUID = 1L;
			public void insertString(int offs, String string, AttributeSet a)throws BadLocationException {
				if (string != null){
					if(string.matches("\\d{1,}")){
						super.insertString(offs, string, a);
					}
				}
			}
	    });

كذلك يمكنك اضافة طول النص باضافة شرط لذلك في المثال.

if(string.matches("\\d{1}") && offs<3)
#3

جميل جداً أخ حمزاوي

بالمناسبة ما رأيك لو تكلمنا عن هذه المكونات أكثر

بمعنى كيف تقوم بعمل هذه المكونات

(قد يستفيد الآخرين من الأفكار ويقومون بتوفير مكونات components أخرى)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#4
اقتباس
هنا انت لست بحاجة الى انشاء مكون جديد يرث من JTextField

فالموضوع متعلق بـ PlainDocument

قم باعادة كتابه هذا الكائن فقط

جزاكم الله خيرا يا اخ العيافى

انا قصدت اننا نستخدم مكون جديد

بحيث انى لو محتاج TextField يسمح بدخول ارقام فقط

فانا لست بحاجه الى كتابه هذا الكود اكثر من مره

وانا فعلا رايت هذا الكود على النت قبل ذلك

ولكن لم افهمه من قبل ولكن الان تقريبا فهمته والحمدلله

شكرا جزاك الله خيرااا

Software Developer
Mahmoudkelany.com


 

#5
اقتباس
جميل جداً أخ حمزاوي

بالمناسبة ما رأيك لو تكلمنا عن هذه المكونات أكثر

بمعنى كيف تقوم بعمل هذه المكونات

(قد يستفيد الآخرين من الأفكار ويقومون بتوفير مكونات components أخرى)

الله يخليك يا اخ علاء

يعنى شرح الكود ولا مفهوم عام ؟

هو فيه شرح للـ

ImagePanel

TransparentPanel

لو الشرح دا مش مفيد ممكن اشرحه ان شاء الله

الشرح على الـ youtube

اتمنى ان الكل يستفيد ان شاء الله

سلام عليكم

2

Software Developer
Mahmoudkelany.com


 

#6

أجدت وأفدت أيها المهندس

وأحيي فيك حرصك على نشر العلم وإفادة ومساعدة غيرك فكثر الله من أمثالك

لكني ألومك وكل الإخوة والاخوات المصريين

يبدوا أن لهجتكم المصرية قد طغت كثيراً على طريقة كلامكم

سواء من ناحية الالفاظ أو من ناحية النطق

لكن خصوصا النطق

وحتى على مستوى العلماء والدعاة ومشائخ الأزهر يندر أن نجد عالماً أو داعية مصري لا تطغى لهجته المصرية على كلامه

مع أنكم يا أهل مصر اساتذة العربية وادبائها ويكفيكم فخراً أمير الشعراء أحمد شوقي

ولولا الإعلام والمسلسلات والأفلام المصرية

لكان من الصعب على غير المصر فهم اللهجة المصرية

...

..

..

.

بالمناسبة انا بهزر معاك يا باشا بخصوص اللغة واللهجة

خذ راحتك

اكرر شكري لك

محبتي واحترامي

لا بد من صنعاء وان طال السفر

#7
san3aniJava كتب:

أجدت وأفدت أيها المهندس

وأحيي فيك حرصك على نشر العلم وإفادة ومساعدة غيرك فكثر الله من أمثالك

لكني ألومك وكل الإخوة والاخوات المصريين

يبدوا أن لهجتكم المصرية قد طغت كثيراً على طريقة كلامكم

سواء من ناحية الالفاظ أو من ناحية النطق

لكن خصوصا النطق

وحتى على مستوى العلماء والدعاة ومشائخ الأزهر يندر أن نجد عالماً أو داعية مصري لا تطغى لهجته المصرية على كلامه

مع أنكم يا أهل مصر اساتذة العربية وادبائها ويكفيكم فخراً أمير الشعراء أحمد شوقي

ولولا الإعلام والمسلسلات والأفلام المصرية

لكان من الصعب على غير المصر فهم اللهجة المصرية

بالمناسبة انا بهزر معاك يا باشا بخصوص اللغة واللهجة

خذ راحتك

اكرر شكري لك

محبتي واحترامي

شكرا جدا على الرد

وانا حاولت اساعد على قدر الامكان

وانا اعلم ذلك ولكن ما الحل اذن ؟

هذا تسمى اللغه العاميه التى يتعامل بها الشعب وتقريبا معظم الشعوب العربيه تتكلم هكذا

ولا يهمك يا اخى العزيز

فانا اعلم ما تقول جيدا

وانا كنت اتكلم باللغه العاميه ولكن نبهت قبل ذلك فاصبحت اتكلم باللغه العربيه الفصحى الى حد كبير

وانا قد تشرفت بمرورك وردك الجميل

تحياتى

سلام عليكم

Software Developer
Mahmoudkelany.com


 

#8

استمر في الكتابة يا حمزاوي باشا

وستتعود مع الزمن

جميعنا استصعبنا من الكتابة بالعربية مبدئياً

لكننا أصبحنا نستعصب من كتابة غير العربي بعد ذلك

بالنسبة للموضوع جيد لو تعطي نقاط عامة عن المكونات components التي كتبت

مثال كيف تقوم بعمل الشفافية للمكون وهكذا

طبعاً الفيديو جيد

لكنه يضيع من وقتي 10 دقائق ربما لا آخذها لو كتبت الشيفرة كتابة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#9

san3aniJava

لك منى كل الاحترام

00020309t.gif

1958_1963.gif
#10
علاء الصالحي كتب:

استمر في الكتابة يا حمزاوي باشا

وستتعود مع الزمن

جميعنا استصعبنا من الكتابة بالعربية مبدئياً

لكننا أصبحنا نستعصب من كتابة غير العربي بعد ذلك

بالنسبة للموضوع جيد لو تعطي نقاط عامة عن المكونات components التي كتبت

مثال كيف تقوم بعمل الشفافية للمكون وهكذا

طبعاً الفيديو جيد

لكنه يضيع من وقتي 10 دقائق ربما لا آخذها لو كتبت الشيفرة كتابة

تحياتي

اكيد ان شاء الله

فانا استمر ف ذلك ان شاء الله

حاضر ان شاء الله

ولكن لدى امتحان اليوم وانا ذاهب للكليه بعد قليل ان شاء الله

وسوف اقوم بالشرح باذن الله

سلام عليكم

Software Developer
Mahmoudkelany.com


 

#11

السلام عليكم ورحمه الله وبركاته

سوف نبدا ان شاء الله شرح الـ ImagePanel

public class ImagePanel extends javax.swing.JPanel {
}

فالكود السابق اردت استخدام Panel

ولكن اريد التعديل فى الهيكل البنائى لها

واردت اضافه صوره فى الخلفيه

private Image backgroundImage;

قدمت بتعريف متغير من نوع Image

وانشات اليه داله

setBackgroudImage

getBackgroudImage

هيا بنا نتكلم عن الداله

setBackgroudImage

  public void setBackgroudImage(Image backgrooundImage) {
        this.backgroundImage = backgrooundImage;
        Dimension size = new Dimension(this.getWidth(), this.getHeight());
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);
        setOpaque(false);
    }

عند استخدام الـ ImagePanel

لابد من ادخال الصوره الى الداله setBackgroudImage

لكى يتم وضعها فى المتغير نوعه Image

       Dimension size = new Dimension(this.getWidth(), this.getHeight());

المتغير size

تم تعريفه على الـ Dimension class

والمدخلات لهذه الداله كما هما موضح انهم

this.getWidth(), this.getHeight()

فالداله getWidth() تعود بعرض الـ Panel

والداله getHeight() تعود بطول الـ Panel

فهنا تم استخدامها لكى تعود بالطول والعرض للـ Panel

setMinimumSize(size);

وهنا عندما يضغط المستخدم على زر التكبير

فانه يتم اعاده تحجيم الاطار الى الحجم العائد من المتغير size

وكذلك فى هذه الدوال

setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);

نأتى بعد ذلك الى الداله

public Image getBackgroudImage() {
        return backgroundImage;
    }

التى تقوم بعوده الصوره المخزنه فى المتغير backgroundImage

سوف نتحدث عن البناء

public ImagePanel() {
    }

فى اخر الشرح وما اهميته هنا

نأتى بعد ذلك الى اعاده تعريف الداله paintComponent

اللتى تقوم باعاده رسم المكونات للـpanel

public void paintComponent(Graphics g) {
        if (backgroundImage != null) {
            g.drawImage(backgroundImage, 0, 0, this.getWidth(), this.getHeight(), null);
        }
    }

فهنا نستخدم شرط if

اذا كان المتغير backgroundImage لا يساوى null

بمعنى يوجد صوره مخزنه فى هذا المتغير

فانه يقوم باعاده الرسم ويقوم برسم الصوره

واذا كانت تساوى null فانه لا يقوم باى تغيرات وكانها panel عاديه

            g.drawImage(backgroundImage, 0, 0, this.getWidth(), this.getHeight(), null);

هنا يقوم برسم صوره والتى تاخد المتغيرات

الصوره نفسها

والــ x , y المفروض الرسم بدايه الرسم من عندهم

واخد الطول والعرض للشكل

ورسم الصوره على اساسهما

نأتى الى البناء

public ImagePanel() {
    }

كما نرى ان البناء لا يفعل شىء؟

ولكن اذا كان هناك بناء يأخد متغيرات

ولا يوجد بناء افتراضى

فسوف تواجهنا مشكله فى اضافه الـ ImagePanel الى الـPaltte

لماذا

لان الـ paltte تاخذ عند اضافه المكونات الاضافيه اليها لابد وانت تكون java beans

وتعريف الـ java beans انها تحتوى على بناء افتراضى.

2

Software Developer
Mahmoudkelany.com


 

#12

السلام عليكم ورحمه الله وبركاته

سوف نبدا الان بشرح الـ TransparentPanel

نكون

 public class TransparentPanel extends JPanel {
}

تمتدد من الـ JPanel

وبعد ذلك نعرف

الالوان الرئيسيه الاحمر والازرق والاخضر ودرجه شفافيه اللون

private int red;    
    private int green;
      private int blue;
    private int alpha;

وبعد ذلك بم ان المتغيرات private نقوم بعمل getters and setter

   public TransparentPanel() {
        this(238, 238, 238, 100);
    }

وهنا كما نرى ان هناك ارقام افتراضيه للبناء

فهما هيا

هذه الارقام هيا لون الـpanel الافتراضى الارقام 238

انما الرقم 100 هو مستوى الشفافيه للالوان

ولكن مممكن اعمل بناء بياخذ القيم من المستخدم كما يلى

    public TransparentPanel(int red, int green, int blue, int alpha) {
        super();
        setOpaque(false);
        setLayout(null);
    }

فهنا ياخذ اللالوان بالترتيب اللون الاحمر واللون الاخضر والازرق ودرجه الالفا للشفافيه

وبعد ذلك بعمل اعاده تعريف للداله paintComponent

 public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Color ppColor = new Color(red, green, blue, alpha); //r,g,b,alpha
        g.setColor(ppColor);
        g.fillRect(0, 0, this.getWidth(), this.getHeight()); //x,y,width,height
    }

بعمل متغير من نوع Color

وباعطى اليه القيم للون الاحمر والازرق والاخضر ودرجه الشفافيه

وبعد ذلك بعمل setColor للـ panel باللون المختار مع درجه الشفافيه

وبعد ذلك بعمل ملئ للشكل بدايه من الاحداثيات 0 و 0

وحتى الطول والعرض للاطار

اتمنى ان اكون قد شرحت الكود شرح يفهم

تم تعديل هذه المشاركة بواسطة Eng.Hamzawy في 22 مايو 2010 في 16:10

1

Software Developer
Mahmoudkelany.com


 

#13

قد قومت باعداد فيديو

استحدام الـ imagepanel , transperantPanel

واعتذر الفيديو بدون صوت لان الشغل كله معمول فى مكتبه الكليه

الفيديو على اليوتيوب او للتحميل من على الميديا فير

الـ ImagePanel

MediaFire

الـ TransparentPanel

MediaFire

اتمنى ان اكون شرحت المكونين شرح واف

سلام عليكم

1

Software Developer
Mahmoudkelany.com


 

#14

جهد رائع أخ حمزاوي

قمت بتثبيت الموضوع للفائدة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#15

بالفعل شغل جميل من عضو مجتهد

مشكوووووووور

1 −1
00020309t.gif

1958_1963.gif
#16
علاء الصالحي كتب:

جهد رائع أخ حمزاوي

قمت بتثبيت الموضوع للفائدة

تحياتي

جزاكم الله خيرا على التثبيت اخى العزيز

وان شاء الله نحاول نكون مساعدين دائما ان شاء الله

سلام عليكم

اسراء شلبى كتب:

بالفعل شغل جميل من عضو مجتهد

مشكوووووووور

ميرسى ربنا يخليكى يارب

واحنا نيجى ايه جنب شغلك المتميز

فى تقدم جميعا ان شاء الله

Software Developer
Mahmoudkelany.com


 

#17

تسلم ايدك بجد موضوع جميا انا عجبني الشغل جدددددددددددداااااا وربنا يوفقك يا رب

#18
aya mohamed كتب:

تسلم ايدك بجد موضوع جميا انا عجبني الشغل جدددددددددددداااااا وربنا يوفقك يا رب

ربنا يخليكى يارب

اهم حاجه انها تكون حاجه مفيده

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

وحبيت انشط الموضوع لان فيه ناس عاوزاه :D

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 1 أكتوبر 2010 في 21:15

Software Developer
Mahmoudkelany.com


 

#19

انا فعلا كنت بعانى من نقص المكونات والخصائص المتاحه

فى بيئه عمل الجافا .. ولكن انت فتحت بوابه جديده ان شاء الله

تكون مفيده ..

ومجهود متميز طبعا من غير كلام ... +2

no-pain-no-gain.jpg

اذا كنت لا تعلم الى اين تذهب... فكــل الطرق تؤدى الى هناك

#20
The expendable كتب:

انا فعلا كنت بعانى من نقص المكونات والخصائص المتاحه

فى بيئه عمل الجافا .. ولكن انت فتحت بوابه جديده ان شاء الله

تكون مفيده ..

ومجهود متميز طبعا من غير كلام ... +2

عانى براحتك :D

هههههههههه

منور يا ابو حميد

طال غيابك

ان شاء الله اى جديد هنضعه فى هذا الموضووع

ربنا يخليك يارب :)

بس على فكرا هى +1 مش +2 :D

Software Developer
Mahmoudkelany.com


 

#21
Mahmoud Kelany كتب:

بس على فكرا هى +1 مش +2 :D

يا راجل بس +1 على الموضوع و+1 على احد الردود

الا لو كان ليا +1 مره واحده وانا مظنش ومتزعلش نفسك -1

..متخافش بهزر بس انت تستاهلهم ويا ريت نضيف اى جديد

خاصه فيما يتعلق ب GUI Components

no-pain-no-gain.jpg

اذا كنت لا تعلم الى اين تذهب... فكــل الطرق تؤدى الى هناك

#22
The expendable كتب:

يا راجل بس +1 على الموضوع و+1 على احد الردود

الا لو كان ليا +1 مره واحده وانا مظنش ومتزعلش نفسك -1

..متخافش بهزر بس انت تستاهلهم ويا ريت نضيف اى جديد

خاصه فيما يتعلق ب GUI Components

لا متخافش انا مش بتهدد

ربنا يخليك يا حماده :)

لكن الاضافات بتكون حسب الاحتياج اليها

يعنى لو انت عندك حاجه اعرضها ونفكر في حلها ونعرض الحل هنا

يعنى واجهتتك شىء عاوزه تعمله وليس موجود فى الـ GUI Palate

اعرضه زى ما قولت لك :)

Software Developer
Mahmoudkelany.com


 

#23
Mahmoud Kelany كتب:

عانى براحتك :D

هههههههههه

منور يا ابو حميد

طال غيابك

ان شاء الله اى جديد هنضعه فى هذا الموضووع

ربنا يخليك يارب :)

بس على فكرا هى +1 مش +2 :D

اخى الكريم

اجو ايضا ان تتكرم بشرح طريقه عمل التكست للارقام فقط

او للحروف فقط

و شكرا

#24

الفكره فانك بتقوم بعمل مستمع من نوع CaretListener

وبعدها بتقوم بعمل فحص

اذا كان الذى ادخله المستخدم ان لم يكن digit

فانك تقوم بحذف اخر شىء وضعه

ولكن طبعا مش هتلاحظ

لان هناك سرعه فى العمل

وكمان مش هينفع انك تعمل عمليه الفحص والحذف فى اثناء عمليه الكتابه

فبالتالى هتقوم بعمل Thread منفصل تقوم بعمله الفحص والحذف فيه

وبالتالى عمليه الكتابه هتستخدم الـ Thread الرئيسى للـ GUI

انما عمليه الفحص انت قومت بعمل خيط خاص بها

واعتقد ان الكود كدا فكرته واضحه

وهذا هو الكود

import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

/**
 * 
 * @author Mahmoud Kelany
 */
public class NumericTextField extends JTextField {

	private NumericTextField currectObject = null;

	public NumericTextField() {
    	currectObject = this;
    	this.addCaretListener(new CaretUpdateListenerClass());
	}

	private class CaretUpdateListenerClass implements CaretListener {

    	public void caretUpdate(CaretEvent e) {
        	checkLastCharacter();
    	}

    	private void checkLastCharacter() {

        	new Thread() {

            	@Override
            	public void run() {
                	// Additional
                	int caretPosition = currectObject.getCaretPosition();
                	String text = currectObject.getText();
                	if (text.length() != 0 && caretPosition != 0) {
                    	// Write instead:
                    	char c = text.charAt(caretPosition - 1);
                    	if (!Character.isDigit(c)) {
                        	StringBuffer sb = new StringBuffer(text);
                        	sb.deleteCharAt(caretPosition - 1);
                        	currectObject.setText(sb.toString());
                        	// Write instead:
                        	currectObject.setCaretPosition(caretPosition - 1);
                        	// Additional
                        	currectObject.repaint();
                    	}
                	}
            	}
        	}.start();
    	}
	}
}

بالتوفيق :)

Software Developer
Mahmoudkelany.com


 

#25

موضوع جميل الله يعطيك العافية

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


مواضيع مشابهة