الوقت/التاريخ الآن هو الأحد أبريل 28, 2024 10:27 am
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
- مشاهدة: 733
إنشاء اطار دائري للصور باستخدام 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
- مشاهدة: 978
الخميس أبريل 25, 2024 8:56 pm من طرف moslema_r
» شركة مكافحة حشرات في راس الخيمة
الخميس أبريل 25, 2024 8:34 pm من طرف moslema_r
» تطبيقIncogniton لإدارة ملفات تعريف متعددة للمتصفح
الأربعاء أبريل 24, 2024 3:51 pm من طرف زاكااا
» افضل شركة مكافحة النمل الابيض بالرياض
الإثنين أبريل 22, 2024 9:41 pm من طرف moslema_r
» Exemplary Сasual Dating - Verified Women
الخميس أبريل 18, 2024 9:18 pm من طرف wdqwd
» رش الدفان بالرياض
الخميس أبريل 18, 2024 7:11 pm من طرف moslema_r
» شركة تنظيف خزانات الشارقة
الخميس أبريل 18, 2024 6:57 pm من طرف moslema_r
» شركة مكافحة الفئران بالرياض
الإثنين أبريل 15, 2024 8:23 pm من طرف moslema_r
» افضل شركة كشف تسربات المياه بالباحة
الخميس أبريل 04, 2024 7:02 am من طرف gmalnagy
» ساعدوني وفهموني help me
الجمعة مارس 29, 2024 8:37 am من طرف linesoft