إنشاء اطار دائري للصور باستخدام JLabel
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: واجهة المستخدم الرسومية Java Swing
صفحة 1 من اصل 1 • شاطر
إنشاء اطار دائري للصور باستخدام JLabel
من المعروف أن لغة الجافا لا توفر مكون متخصص لعرض الصور فى تطبيقاتهم لذلك اغلبهم يستخدمون #JLabel لعرض الصور ..
ولذلك سننشئ في هذا المقال #JLabel مخصصًا سيكون له شكل دائري على حافته ، و بالتالى سنحصل على تأثير دائري رائع وأنيق لصورك بدلا من JLabel المستطيل التقليدي
لإعطاء الشكل الدائري لـ JLabel ، ما سنفعله هو إنشاء حدودنا الخاصة التي سيتم تمديدها من #AbstractBorder ، ثم سنقوم بالكتابة فوق طريقة #paintBorder للرسم بفضل java2d على شكل Ellipse2D ، لملء الأجزاء من الشكل الدائري ، سيتم استخدامه لون المكون الرئيسي.
اذن اولا فئة سنقوم بكاتبة فئة و ليكن باسم #CircleBorder لانشاء الحدود الدائرية على النحو التالى :
الان يمكنك استخدام الطريقة اعلاه على النحو التالى :
ولذلك سننشئ في هذا المقال #JLabel مخصصًا سيكون له شكل دائري على حافته ، و بالتالى سنحصل على تأثير دائري رائع وأنيق لصورك بدلا من JLabel المستطيل التقليدي
لإعطاء الشكل الدائري لـ JLabel ، ما سنفعله هو إنشاء حدودنا الخاصة التي سيتم تمديدها من #AbstractBorder ، ثم سنقوم بالكتابة فوق طريقة #paintBorder للرسم بفضل java2d على شكل Ellipse2D ، لملء الأجزاء من الشكل الدائري ، سيتم استخدامه لون المكون الرئيسي.
اذن اولا فئة سنقوم بكاتبة فئة و ليكن باسم #CircleBorder لانشاء الحدود الدائرية على النحو التالى :
- الكود:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import javax.swing.border.AbstractBorder;
public class CircleBorder extends AbstractBorder{
private Color color;
private BasicStroke stroke = null;
private RenderingHints hints;
CircleBorder() {
color = Color.blue;//negro
stroke = new BasicStroke(2);//سمك الحافة
hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
}
CircleBorder( Color color, int value) {
this.color = color;
stroke = new BasicStroke(value);
hints = new RenderingHints(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
}
@Override
public void paintBorder(Component c,Graphics g,int x, int y, int width, int height) {
Graphics2D g2 = (Graphics2D) g;
Ellipse2D circle2D = new Ellipse2D.Double();//java2d
//إذا كان عرض خط الحدود يساوي الصفر
if( stroke.getLineWidth()==0 )
{
//ارسم الدائرة بالكامل
circle2D.setFrameFromCenter(
new Point(x+width/2,y+height/2), //نقطة المنتصف
new Point( width , height) //ancho y alto
);
}
else
{
//طلاء الدائرة ولكن طرح سمك الحافة
circle2D.setFrameFromCenter(
new Point(x+width/2,y+height/2),
new Point( width-(int)stroke.getLineWidth() , height-(int) stroke.getLineWidth())
);
}
Polygon pointer = new Polygon();
Area area = new Area(circle2D);
area.add(new Area(pointer));
g2.setRenderingHints(hints);
//طلاء الخلفية مع لون المكون الأصل
Component parent = c.getParent();
if (parent!=null) {
Color bg = parent.getBackground();
Rectangle rect = new Rectangle(0,0,width, height);
Area borderRegion = new Area(rect);
borderRegion.subtract(area);
g2.setClip(borderRegion);
g2.setColor(bg);
g2.fillRect(0, 0, width, height);
g2.setClip(null);
}
if( stroke.getLineWidth()>0 )
{
g2.setColor(color);
g2.setStroke(stroke);
}
g2.draw(area);
}
}
الان يمكنك استخدام الطريقة اعلاه على النحو التالى :
- الكود:
jLabel1.setBorder(new CircleBorder());
م/موسي- الاشراف
- تاريخ التسجيل : 18/02/2011
المساهمات : 178
النقاط : 346
التقيم : 12
الدولة :
الجنس :
رد: إنشاء اطار دائري للصور باستخدام JLabel
شكرا جزيلا و بالتوفيق يارفيق
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
رد: إنشاء اطار دائري للصور باستخدام JLabel
اين صور الاخراج
RANA- .....
- تاريخ التسجيل : 01/08/2013
المساهمات : 79
النقاط : 124
التقيم : 3
الدولة :
الجنس :
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: واجهة المستخدم الرسومية Java Swing
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 7:57 pm من طرف moslema_r
» تصميم تطبيق للسوبر ماركت
أمس في 7:22 am من طرف mona mohamed
» شركه مكافحه حشرات عجمان
السبت مايو 11, 2024 9:15 pm من طرف moslema_r
» Harmony of intimacy, uninhibitedness with mutual consent
الجمعة مايو 10, 2024 5:56 am من طرف wdqwd
» افضل شركة تنظيف شقق بالرياض
الخميس مايو 09, 2024 5:54 pm من طرف moslema_r
» تطبيق جوال لصيانة المكيفات
الأربعاء مايو 08, 2024 6:58 am من طرف mona mohamed
» مظلات وسواتر الرياض
الثلاثاء مايو 07, 2024 7:47 pm من طرف moslema_r
» شركة تنظيف فلل بالرياض
الثلاثاء مايو 07, 2024 6:55 pm من طرف moslema_r
» شركة تنظيف كنب بالرياض
الأحد مايو 05, 2024 6:56 pm من طرف moslema_r
» مظلات وسواتر
السبت مايو 04, 2024 8:58 pm من طرف moslema_r