السلام عليكم ..
هذا مثال بسيط حول كيفية جعل الادوات التي نستخدمها في الـ 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();
}
}مرفق لكم تجربة الزر الشفاف ...
ايضاً تستطيع تجريب نفس الفكرة لعمل قائمة منبثقة شفافة بــكود التالي:
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
سلامي للجميع ...


