Swing - Component و الكلاس JLabel


مقدمة الكلاس Component 

الكلاس Component عبارة عن Abstract Class يحدد الخصائص و الأفعال المشتركة بين جميع الأشياء التي يمكننا إضافتها في واجهة المستخدم.
إذاً جميع الأشياء التي يمكن إضافتها في واجهة المستخدم تملك جميع الخصائص و الدوال الموجودة في هذا الكلاس.


بنا الكلاس Component 

public abstract class Component
extends Object
implements ImageObserver, MenuContainer, Serializable
	

دوال الكلاس Component

الجدول التالي يحتوي على بعض دوال الكلاس Component.

الدالة مع تعريفها
public void add(Component c) تضيف كائن بداخل الكائن الذي قام باستدعائها.
مثال: يمكنك إستدعاءها لإضافة زر بداخل النافذة.

مكان الباراميتر c نمرر كائن من إحدى الكلاسات التي ترث من الكلاس Component.
public void setSize(int width, int height) تحدد حجم الكائن الذي قام باستدعائها (عرضه و طوله).
مثال: يمكنك إستدعاءها لتحديد حجم النافذة.

  • مكان الباراميتر width نمرر رقم يمثل عرض الكائن بالـ pixel.

  • مكان الباراميتر height نمرر رقم يمثل طول الكائن بالـ pixel.

public void setBounds(int x, int y, int width, int height) تحدد موقع و حجم الكائن الذي قام باستدعائها.
مثال: يمكنك إستدعاءها لتحديد حجم و مكان النافذة التي ستظهر عند التشغيل.

  • مكان الباراميتر x نمرر رقم يمثل مكان ظهور الكائن على خط العرض.

  • مكان الباراميتر y نمرر رقم يمثل مكان ظهور الكائن على خط الطول.

  • مكان الباراميتر width نمرر رقم يمثل عرض الكائن بالـ pixel.

  • مكان الباراميتر height نمرر رقم يمثل طول الكائن بالـ pixel.

public void setLayout(LayoutManager lm) تحدد طريقة ترتيب الكائنات بداخل النافذة.

مكان الباراميتر lm نمرر كائن من إحدى الكلاسات التي تنفذ الإنترفيس LayoutManager.
public void setVisible(boolean visibility) تستخدم لإخفاء أو إظهار الكائن الذي قام باستدعائها.
مثال: يمكنك إستدعاءها لإخفاء النافذة أو إظهارها.

مكان الباراميتر visibility نمرر القيمة true إذا أردنا إظهار الشيء و القيمة false إذا أردنا إخفاء الشيء.

Java Swing الكلاس JLabel

 Java Swing الكلاس JLabel

الكلاس JLabel يستخدم لإضافة عنوان (Label) في واجهة المستخدم.
محتوى هذا العنوان يمكن أن يكون: نص, أيقونة, نص و أيقونة بجانبه.


بنا الكلاس JLabel

public class JLabel
extends JComponent
implements SwingConstants, Accessible
	

كونستركتورات الكلاس JLabel

الجدول التالي يحتوي على كونستركتورات الكلاس JLabel.

الكونستركتور مع تعريفه
public JLabel() ينشئ كائن من الكلاس JLabel يمثل عنوان فارغ.
public JLabel(String text) ينشئ كائن من الكلاس JLabel يمثل عنوان.
مكان الباراميتر text نمرر النص الذي نريد وضعه كعنوان.
public JLabel(String text, int horizontalAlignment) ينشئ كائن من الكلاس JLabel يمثل عنوان مع إمكانية تحديد موقع ظهور نص العنوان في النافذة.

  • مكان الباراميتر text نمرر النص الذي نريد وضعه كعنوان.

  • مكان الباراميتر horizontalAlignment نمرر إسم ثابت يمثل موقع ظهور نص العنوان في النافذة.


الثوابت التي يمكن تمريرها مكان البارميتر horizontalAlignment: LEFT, CENTER, RIGHT, LEADING و TRAILING.
public JLabel(Icon image) ينشئ كائن من الكلاس JLabel يمثل أيقونة كعنوان.
مكان الباراميتر image نمرر كائن من الإنترفيس Icon يمثل الأيقونة التي سيتم وضعها كعنوان.
public JLabel(Icon image, int horizontalAlignment) ينشئ كائن من الكلاس JLabel يمثل أيقونة كعنوان مع إمكانية تحديد موقع ظهور أيقونة العنوان في النافذة.

  • مكان الباراميتر image نمرر كائن من الإنترفيس Icon يمثل الأيقونة التي سيتم وضعها كعنوان.

  • مكان الباراميتر horizontalAlignment نمرر إسم ثابت يمثل موقع ظهور أيقونة العنوان في النافذة.


الثوابت التي يمكن تمريرها مكان البارميتر horizontalAlignment: LEFT, CENTER, RIGHT, LEADING و TRAILING
public JLabel(String text, Icon image, int horizontalAlignment) ينشئ كائن من الكلاس JLabel يمثل نص و أيقونة معاً كعنوان.

  • مكان الباراميتر text نمرر النص الذي نريد وضعه في العنوان.

  • مكان الباراميتر image نمرر كائن من الإنترفيس Icon يمثل الأيقونة التي سيتم وضعها في العنوان.

  • مكان الباراميتر horizontalAlignment نمرر إسم ثابت يمثل موقع ظهور نص و أيقونة العنوان في النافذة.


الثوابت التي يمكن تمريرها مكان البارميتر horizontalAlignment: LEFT, CENTER, RIGHT, LEADING و TRAILING

دوال الكلاس JLabel

الجدول التالي يحتوي على بعض دوال الكلاس JLabel.

الدالة مع تعريفها
public String getText() ترجع نص كائن الـ JLabel الذي قام بإستدعائها كـ String.
public void setText(String text) تستخدم لتبديل نص كائن الـ JLabel الذي قام بإستدعائها.
مكان الباراميتر text نضع النص الجديد.
public int getHorizontalAlignment() ترجع رقم نوعه int يمثل موقع ظهور نص و أيقونة كائن الـ JLabel الذي قام بإستدعائها في عرض النافذة.
public void setHorizontalAlignment(int alignment) تستخدم لتحديد موقع ظهور نص و أيقونة كائن الـ JLabel الذي قام بإستدعائها في عرض النافذة.
مكان الباراميتر alignment نضع إسم إحدى ثوابت الإنترفيس SwingConstants: LEFT, CENTER, RIGHT, LEADING و TRAILING
public int getVerticalAlignment() ترجع رقم نوعه int يمثل موقع ظهور نص و أيقونة كائن الـ JLabel الذي قام بإستدعائها في طول النافذة.
public void setVerticalAlignment(int alignment) تستخدم لتحديد موقع ظهور نص و أيقونة كائن الـ JLabel الذي قام بإستدعائها في طول النافذة.
مكان الباراميتر alignment نضع إسم إحدى ثوابت الإنترفيس SwingConstants: TOP, CENTER و BOTTOM.
public Icon getIcon() ترجع أيقونة كائن الـ JLabel الذي قام بإستدعائها ككائن نوعه Icon.
ترجع null في حال كان لا يملك أيقونة.
public void setIcon(Icon icon) تستخدم لوضع أيقونة لكائن الـ JLabel الذي قام بإستدعائها.
مكان الباراميتر icon نضع كائن من الإنترفيس Icon يمثل الأيقونة التي ستوضع إلى جانب نص كائن الـ JLabel.

أمثلة شاملة في الكلاس JLabel



Java Swing  طريقة إنشاء JLabel

هذا المثال  يعلمك طريقة إنشاء كائن من الكلاس JLabel و إضافته في النافذة.


مثال طريقة إنشاء كائن من الكلاس JLabel و إضافته في النافذة.

Main.java
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.FlowLayout;
 
public class Main {
 
    public static void main(String[] args) {
 
        JFrame frame = new JFrame("JLabel demo");               // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
        frame.setSize(300, 250);                                // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
        frame.setLayout(new FlowLayout());                      // حتى نجعل الأشياء التي نضيفها في النافذة تترب وراء بعضها و في وسط النافذة FlowLayout إستخدمنا الـ
 
        JLabel label = new JLabel("Welcome to Swing");          // Label أي قمنا بإنشاء JLabel هنا أنشأنا كائن من الكلاس
 
        frame.add(label);                                       // frame في الـ label هنا أضفنا الـ
 
        frame.setVisible(true);                                 // هنا جعلنا النافذة مرئية
 
    }
 
}
		

ستظهر لك النافذة التالية عند التشغيل.

طريقة إضافة jlabel في ال JFrame في جافا



Java Swing طريقة تغيير نوع و حجم الخط الـ JLabel

هذا المثال  يعلمك طريقة تغيير نوع و حجم الخط لكائن الـ Jlabel.


مثال طريقة تغيير نوع و حجم الخط لكائن الـ Jlabel.

Main.java
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.FlowLayout;
import java.awt.Font;
 
public class Main {
 
    public static void main(String[] args) {
 
        JFrame frame = new JFrame("JLabel demo");               // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
        frame.setSize(300, 250);                                // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
        frame.setLayout(new FlowLayout());                      // حتى نجعل الأشياء التي نضيفها في النافذة تترب وراء بعضها و في وسط النافذة FlowLayout إستخدمنا الـ
 
        Font newFont = new Font("Serif", Font.BOLD, 25);        // حجمه 25 serif يمثل نوع خط عريض إسمه Font هنا أنشأنا كائن من الكلاس
 
        JLabel label = new JLabel("Welcome to Swing");          // Label أي قمنا بإنشاء JLabel هنا أنشأنا كائن من الكلاس
        label.setFont(newFont);                                 // newFont يستخدم الـ label هنا جعلنا الـ
 
        frame.add(label);                                       // frame في الـ label هنا أضفنا الـ
 
        frame.setVisible(true);                                 // هنا جعلنا النافذة مرئية
 
    }
 
}
		

ستظهر لك النافذة التالية عند التشغيل.

تغير نوع خط ال jlabel في جافا



Java Swing طريقة تغيير نوع و لون و حجم الخط الـ JLabel

هذا المثال  يعلمك طريقة تغيير نوع و حجم و لون الخط لكائن الـ Jlabel.


مثال طريقة تغيير نوع و حجم و لون الخط لكائن الـ Jlabel.

Main.java
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.FlowLayout;
import java.awt.Font;
 
public class Main {
 
    public static void main(String[] args) {
 
        JFrame frame = new JFrame("JLabel demo");               // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
        frame.setSize(300, 250);                                // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
        frame.setLayout(new FlowLayout());                      // حتى نجعل الأشياء التي نضيفها في النافذة تترب وراء بعضها و في وسط النافذة FlowLayout إستخدمنا الـ
 
        Font newFont = new Font("Arial", Font.BOLD, 18);        // حجمه 18 Arial يمثل نوع خط عريض إسمه Font هنا أنشأنا كائن من الكلاس
 
        JLabel label_1 = new JLabel("label 1");                 // Label أي قمنا بإنشاء JLabel هنا أنشأنا كائن من الكلاس
        label_1.setFont(newFont);                               // newFont يستخدم الـ label هنا جعلنا الـ
 
        JLabel label_2 = new JLabel("label 2");                 // Label أي قمنا بإنشاء JLabel هنا أنشأنا كائن من الكلاس
        label_2.setFont(newFont);                               // newFont يستخدم الـ label هنا جعلنا الـ
 
        JLabel label_3 = new JLabel("label 3");                 // Label أي قمنا بإنشاء JLabel هنا أنشأنا كائن من الكلاس
        label_3.setFont(newFont);                               // newFont يستخدم الـ label هنا جعلنا الـ
 
        label_1.setForeground(Color.blue);                      // إلى اللون الأزرق label_1 هنا قمنا بتغيير لون الـ
        label_2.setForeground(Color.red);                       // إلى اللون الأحمر label_2 هنا قمنا بتغيير لون الـ
        label_3.setForeground(Color.gray);                      // إلى اللون الرمادي label_3 هنا قمنا بتغيير لون الـ
 
        frame.add(label_1);                                     // frame في الـ label_1 هنا أضفنا الـ
        frame.add(label_2);                                     // frame في الـ label_2 هنا أضفنا الـ
        frame.add(label_3);                                     // frame في الـ label_3 هنا أضفنا الـ
 
        frame.setVisible(true);                                 // هنا جعلنا النافذة مرئية
 
    }
 
}
		

ستظهر لك النافذة التالية عند التشغيل.

تغير لون ال jlabel في جافا



Java Swing طريقة عرض الوقت في JLabel

هذا المثال  يعلمك طريقة إنشاء نافذة تعرض الوقت الحالي للمستخدم.
سنستخدم الكلاس Date لنحصل على الوقت الحالي. و سنستخدم Thread لعرض الوقت الحالي كل ثانية.


مثال طريقة إنشاء نافذة تعرض الوقت الحالي للمستخدم.

Main.java
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.FlowLayout;
import java.awt.Font;
import java.util.Date;
import java.text.SimpleDateFormat;
 
public class Main implements Runnable {
 
    static JLabel timeLabel = new JLabel();
 
    @Override
    public void run() {
 
        while(!Thread.currentThread().isInterrupted())          // ( شغال Thread أي طالما أن الـ ) true لا ترجع isInterrupted() طالما أن الدالة
        {
 
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss a");
 
            timeLabel.setText(sdf.format(date));                // كل ثانية timeLabel سيتم وضع الوقت الحالي كنص للكائن
 
            try {
                Thread.sleep(1000);
            }
            catch(Exception e) {
                timeLabel.setText(e.getMessage());              // timeLabel في حال حدث أي خطأ سيتم وضعه كنص للكائن
                timeLabel.setForeground(Color.red);             // و سيتم تلوينه باللون الأحمر
            }
        }
 
    }
 
 
    public static void main(String[] args) {
 
        JFrame frame = new JFrame("Display Time");              // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
        frame.setSize(350, 70);                                 // هنا قمنا بتحديد حجم النافذة. عرضها 350 و طولها 70
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
        frame.setLayout(new FlowLayout());                      // حتى نجعل الأشياء التي نضيفها في النافذة تترب وراء بعضها و في وسط النافذة FlowLayout إستخدمنا الـ
 
        Font newFont = new Font("Arial", Font.BOLD, 20);        // حجمه 20 Arial يمثل نوع خط عريض إسمه Font هنا أنشأنا كائن من الكلاس
 
        timeLabel.setFont(newFont);                             // newFont يستخدم الـ TimeLabel هنا جعلنا الـ
        timeLabel.setForeground(Color.blue);                    // إلى اللون الأزرق TimeLabel هنا قمنا بتغيير لون الـ
 
        frame.add(timeLabel);                                   // frame في الـ TimeLabel هنا أضفنا الـ
 
        frame.setVisible(true);                                 // هنا جعلنا النافذة مرئية
 
        Thread t = new Thread(new Main());                      // Runnable نفسه لأنه يطبق الإنترفيس Main() مبني على كائن من الكلاس Thread هنا قمنا بإنشاء كائن من الكلاس
 
        t.start();                                              // و التي بدورها ستعرض لنا الوقت كل ثانية run() أي سيتم إستدعاء الدالة thread هنا قمنا بتشغيل كائن الـ
 
    }
 
}
		

ستظهر لك النافذة التالية عند التشغيل و الوقت سيتغير بشكل تلقائي كل ثانية.

عرض الوقت الحالي في jlabel في جافا