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

كيف تصنع ادوات Swing شفافة ...

بدأه بنت اليمن في 20 سبتمبر 2008 · 9 رد · 3,192 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

هذا مثال بسيط حول كيفية جعل الادوات التي نستخدمها في الـ GUI تظهر شفافة ..

سنعمل كمثال على زر .. (الفكرة تقوم على عمل class يرث JButton ثم نضيف عليه خصائص جديدة)

اولاً نقوم بعمل class يرث JButton مع اضافة خاصية الشفافية كما يلي:

import javax.swing.*;
import java.awt.*;

class TransparentButton extends JButton 
{  
	public TransparentButton(String text) 
	{   
		super(text);  
		setOpaque(false);   
	}   

	public void paint(Graphics g) 
	{   
		Graphics2D g2 = (Graphics2D) g.create();   
		g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));   
		super.paint(g2);   
		g2.dispose();   
	}   
}

بعدها نستطيع استخدام TransparentButton في كل مرة نريد فيها زر شفاف و ذلك بدلاً من استخدام JButton

لتغير شفافية الزر نستطيع التعديل في الامر :

g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));

و ذلك بتحريك القيمة 0.5f بين الواحد و الصفر ، حيث ان :

0.0f تعطي نسبة شفافية 100%

0.5f تعطي نسبة شفافية 50%

1.0f تعطي نسبة شفافية 0%

الكود التالي لتجرية الزر الشفاف :

import javax.swing.*;
import java.awt.*;

public class Test extends JFrame
{
	JButton normal_button = new JButton("Normal Button");
	TransparentButton transparent_button = new TransparentButton("Transparent Button");

	public Test() 
	{
		super("Test Transparent Button");
		setLayout(new FlowLayout());

		add(normal_button);
		add(transparent_button);

		setSize(200,150);
		setVisible(true);
		setDefaultCloseOperation(3);

	}

	public static void main(String[] args) 
	{
		new Test();
	}
}

مرفق لكم تجربة الزر الشفاف ...

Transparen_Button.rar

ايضاً تستطيع تجريب نفس الفكرة لعمل قائمة منبثقة شفافة بــكود التالي:

class TransparentPopupMenu extends JPopupMenu {  
	public TransparentPopupMenu() {   
		super();  
		setOpaque(false);   
	}   
}  

class TransparentMenuItem extends JMenuItem{  
	public TransparentMenuItem(String text) {   
		super(text);  
		setOpaque(false);   
	}   

	public void paint(Graphics g) {   
		Graphics2D g2 = (Graphics2D) g.create();   
		g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));   
		super.paint(g2);   
		g2.dispose();   
	}   
}

الموضوع موجود على احد المواقع المضلة لدي و هو Dream In Code

سلامي للجميع ...

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#2

جزاك الله خير اختي بنت اليمين

لدي بعض الاسئلة حول بعض التعليمات التي وضعت في البرنامج ...

اتمنى ان لها اجابة ... اي ما الفائدة منها ,,,!!

الاول

 setOpaque(false);

الثاني

g2.dispose();
#3

حياك اخي الكريم ابوسعود ..

بالنسبة للخاصية setOpaque فهي تستخدم من اجل التحكم بقدرة الـ component على الظهور بشكل شفاف..

اذا كانت true فيعني ان العنصر سوف يرسم بدون شفافية ( true ترمز الى انه سوف يتم رسم كل بيكسل فيه ) ... اما ان كانت false فيعني ان العنصر لن ترسم كل بيسكلاته مما قد يجعله شفاف ..

الجدير ذكره هنا ان الوضع الافتراضي لهذه الخاصية هو false الا مع بعض الـ components مثل الـ JButton and JTree و من اجل ذلك نجعله false

بالنسبة للـ g2.dispose(); فهي لها استخدام شائع مع اظهار العناصر على فريم حيث انها تقوم بإلغاء g2 من الذاكرة .. حيث اننا لا نحتاج ان يظهر على الفريم ...

و هذه روابط قد تساعدك :

http://java.sun.com/j2se/1.4.2/docs/api/ja...Opaque(boolean)

http://mindprod.com/jgloss/dispose.html

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#4

:clapping:

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

و ياريت تكوني موضوعية شوية بعد كدة

جزاك الله خيرا :ty:

#5
اقتباس
و ياريت تكوني موضوعية شوية بعد كدة

معليش اخي الكريم ... ما فهمت عليك ؟؟؟ :) هل لديك اي استفسار هنا ؟؟؟

تم تعديل هذه المشاركة بواسطة بنت اليمن في 20 سبتمبر 2008 في 22:28

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#6

مشكورة بنت اليمن دائما موفقة بادن الله

image-27.gif

concepteur realisateur java j2ee

php5 and asp

#7

مشكوره يا بنت اليمن

#8

جميل جدا بنت اليمين ................ جزاك الله خيرا عنا جميعا

و ياريت لو ممكن ازي نبدء ازي في تصيع ادوات ومكونات جافا خاصة بينا زي swing

شروحات او حاجة .......................جزاك الله خيرا ورمضان كريم و اكرم في اخره

سلامي ليكي

mylogo.gif

#9

حياك اخي ســامح ...

اقتباس
و ياريت لو ممكن ازي نبدء ازي في تصيع ادوات ومكونات جافا خاصة بينا زي swing

شروحات او حاجة

تقصد كيفية بناء الواجهات GUI بستخدام Swing ... ؟؟؟ كنت افكر لو نتساعد و نعمل "اجندا" بها المواضيع اللي ممكن نتناولها .. ايش رأيك ؟؟

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#10

أخ سامح

بإمكانك بالوراثة من JComponent

أن تقوم بعمل ما تريد من المكونات الخاصة بك

موضوع جميل بنت اليمن -_-

تحياتي

تم تعديل هذه المشاركة بواسطة alaadiaa في 28 سبتمبر 2008 في 00:03

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

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

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

728x90.png

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