الوقت/التاريخ الآن هو الخميس مارس 28, 2024 10:30 pm
2 نتيجة بحث عن JLabel
[Swing]أجعل الصورة تاخذ حجم JLabel
يسمح لنا المكون #JLabel بتحميل صورة وذلك من خلال الخاصية setIcon ، ومع ذلك لا تأخذ الصورة حجم JLabel ولكنها تحتفظ بحجمها الخاص ،لذلك سنناقش كيفية جعل الصورة تاخذ حجم JLabelويتم ذلك باستخدام الطريقة #getScaledInstance والتى تاخذ المعلمات (عرض int ، ارتفاع int ، تلميحات int) ) من فئة الصورة #Image . تقوم هذه الطريقة بإنشاء نسخة مصغرة من الصورة. إرجاع كائن صورة جديد من شأنه أن يعرض الصورة بالعرض والارتفاع المحددين بشكل افتراضي. يمكن تحميل الكائن Image الجديد بشكل غير متزامن حتى إذا كانت الصورة المصدر الأصلي قد تم تحميلها بالكامل بالفعل.
وسيتم فهم ذلك من خلال المثال التالى :
- الكود:
int w = label.getWidth();
int h = label.getHeight();
//الصورة الاصل
Image img = new ImageIcon(getClass().getResource("/example/black_christmas.png")).getImage();
//تحديد حجم الصورة بقيم حجم رمز التسمية
Image newimg = img.getScaledInstance(w, h, java.awt.Image.SCALE_SMOOTH);
ImageIcon imageIcon = new ImageIcon(newimg);
//وضع الصورة لرمز التسمية
label.setIcon(imageIcon);
- في الجمعة فبراير 07, 2020 1:13 pm
- ابحث في: واجهة المستخدم الرسومية Java Swing
- موضوع: [Swing]أجعل الصورة تاخذ حجم JLabel
- المساهمات: 1
- مشاهدة: 722
إنشاء اطار دائري للصور باستخدام JLabel
من المعروف أن لغة الجافا لا توفر مكون متخصص لعرض الصور فى تطبيقاتهم لذلك اغلبهم يستخدمون #JLabel لعرض الصور ..ولذلك سننشئ في هذا المقال #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());
- في السبت نوفمبر 30, 2019 8:06 pm
- ابحث في: واجهة المستخدم الرسومية Java Swing
- موضوع: إنشاء اطار دائري للصور باستخدام JLabel
- المساهمات: 2
- مشاهدة: 963
اليوم في 7:09 pm من طرف moslema_r
» شركة تنظيف فرشات بالرياض
الثلاثاء مارس 26, 2024 6:26 pm من طرف moslema_r
» شركة تنظيف استراحات بالرياض
الأحد مارس 24, 2024 10:49 pm من طرف moslema_r
» كشف تسربات المياه في جدة
السبت مارس 23, 2024 7:23 pm من طرف gmalnagy
» خدمات كشف تسربات المياه بخصم 25% - اتصل الان
السبت مارس 23, 2024 7:22 pm من طرف gmalnagy
» شركة تنظيف ثريات بالرياض
الخميس مارس 21, 2024 7:23 pm من طرف moslema_r
» كهربائي منازل بالرياض
الأحد مارس 17, 2024 1:52 pm من طرف رانيا حماد
» افضل شركة نقل عفش بالرياض نقل باكستاني 40% خصم | موقع الانوار
الأحد مارس 17, 2024 1:25 pm من طرف رانيا حماد
» افضل معلم جبس بالرياض تركيب جبس بورد بالرياض 20% خصم اتصل الآن
الأحد مارس 17, 2024 1:09 pm من طرف رانيا حماد
» شراء اثاث مستعمل بالكويت بخصم 30%
الأحد مارس 17, 2024 12:54 pm من طرف رانيا حماد