شرح الكلاس Label في javafx

في الدرس السابق تكلمنا عن بنية مكتبة javafx   والان سوف نتكلم عن JavaFX الكلاس Label ,

  شرح الكلاس  Label   

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


بناء الكلاس Label

public class Label
extends Labeled
	

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

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

الكونستركتور مع تعريفه
public Label() ينشئ كائن من الكلاس Label يمثل عنوان فارغ.
public Label(String text) ينشئ كائن من الكلاس Label يمثل عنوان.
مكان الباراميتر text نمرر النص الذي نريد وضعه كعنوان.
public Label(String text, Node graphic) ينشئ كائن من الكلاس Label يمثل نص و أيقونة معاً كعنوان.

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

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

دوال الكلاس Label

الجدول التالي يحتوي على دوال الكلاس Label الأكثر إستخداماً.

الدالة مع تعريفها
public String getText() ترجع نص كائن الـ Label الذي قام بإستدعائها كنص.
public void setText(String text) تستخدم لتبديل نص كائن الـ Label الذي قام بإستدعائها.
مكان الباراميتر text نضع النص الجديد.
public final void setTextFill(Paint value) تستخدم لتحديد لون نص كائن الـ Label الذي قام بإستدعائها.
مكان الباراميتر value نضع كائن من إحدى الكلاسات التي ترث من الكلاس Paint و التي يمكن إستخدامها لتحديد درجة اللون.
public final void setBackground(Background value) تستخدم لوضع لون أو صورة كخلفية لكائن الـ Label الذي قام بإستدعائها.
مكان الباراميتر value نضع كائن من الكلاس Background يشير إلى درجة اللون أو الصورة التي سيتم وضعها كخلفية.
public final void setFont(Font newFont) تستخدم لتحديد حجم و نوع خط كائن الـ Label الذي قام بإستدعائها.
مكان الباراميتر newFont نضع كائن من الكلاس Font يمثل خصائص الخط الجديد.
public final void setUnderline(boolean value) تستخدم لوضع خط تحت نص كائن الـ Label الذي قام بإستدعائها.
مكان الباراميتر value نضع القيمة true لإظهار خط تحت النص.
public final void setRotate(double degree) تستخدم لإدارة نص كائن الـ Label الذي قام بإستدعائها.
مكان الباراميتر degree نضع رقم يمثل درجة الدوران.
public final void setWrapText(boolean value) تستخدم لجعل نص كائن الـ Label الذي قام بإستدعائها ينزل على سطر جديد في حال كان لا يسع في سطر واحد.
مكان الباراميتر value نضع القيمة true لجعل الأحرف تظهر على سطر جديد عند الحاجة.
public final void setLineSpacing(double value) تستخدم لتحديد المسافة بين كل سطرين في نص كائن الـ Label الذي قام باستدعائها.
مكان الباراميتر value نضع رقم يمثل المسافة بين كل سطرين بالـ Pixel.
public final void setPadding(Insets value) تستخدم لإضافة هامش ( مسافة فارغة ) حول نص كائن الـ Label الذي قام باستدعائها.
مكان الباراميتر value نضع كائن من الكلاس Insets يمثل حجم الهامش حول النص من كل الجهات.
public final void setScaleX(double value) تستخدم لتمطيط الـ Label الذي قام باستدعائها بشكل أفقي.
مكان الباراميتر value نضع رقم يمثل كم مرة سيتم مضاعفة حجمه أفقياً.
public final void setScaleY(double value) تستخدم لتمطيط الـ Label الذي قام باستدعائها بشكل عامودي.
مكان الباراميتر value نضع رقم يمثل كم مرة سيتم مضاعفة حجمه عامودياً.
public final void setTranslateX(double value) تستخدم لتحديد مكان الـ Label الذي قام باستدعائها أفقياً.
مكان الباراميتر value نضع رقم يمثل كم Pixel سيتم إزاحته من اليسار إلى اليمين.
public final void setTranslateY(double value) تستخدم لتحديد مكان الـ Label الذي قام باستدعائها عامودياً.
مكان الباراميتر value نضع رقم يمثل كم Pixel سيتم إزاحته من الأعلى إلى الأسفل.
public void setPrefSize(double prefWidth, double prefHeight) تستخدم لتحديد حجم الـ Label الذي قام باستدعائها.

  • مكان الباراميتر prefWidth نضع رقم يمثل عرض الـ Label بالـ Pixel.

  • مكان الباراميتر prefHeight نضع رقم يمثل طول الـ Label بالـ Pixel.

public final void setContentDisplay(ContentDisplay value) تستخدم لتحديد مكان ظهور الأيقونة التي تم إضافتها لكائن الـ Label الذي قام باستدعائها.

مكان الباراميتر value نضع إحدى ثوابت الكلاس ContentDisplay:
  • الثابت LEFT يجعل الصورة تظهر يسار النص كما يظهر بشكل إفتراضي.

  • الثابت RIGHT يجعل الصورة تظهر يمين النص.

  • الثابت TOP يجعل الصورة تظهر تحت النص.

  • الثابت BOTTOM يجعل الصورة تظهر فوق النص.

  • الثابت CENTER يجعل النص يظهر على الصورة.

  • الثابت GRAPHIC_ONLY يجعل الصورة فقط تظهر.

  • الثابت TEXT_ONLY يجعل النص فقط يظهر.

public final void setDisable(boolean value) تستخدم لجعل نص كائن الـ Label الذي قام باستدعائها يبدو غير مفعّل, أي يصبح لونه باهتاً و غير قابل للنقر عليه.
مكان الباراميتر value نضع القيمة true لجعله غير مفعّل.
public final void setStyle(String value) تستخدم لتعديل تصميم الـ Label الذي قام بإستدعائها.
مكان الباراميتر value يمكنك تمرير إسم و قيمة أي خاصية تريد تعديلها في كائن الـ Label بأسلوب لغة CSS لإظهاره بالشكل الذي تريده.

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


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

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

مثال

Main.java
      import javafx.application.Application;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Label;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // يمثل العنوان الذي نريد إضافته في النافذة Label هنا قمنا بإنشاء كائن من الكلاس
      Label label = new Label("Welcome to  alawirisaddam.com. blogspot.com");

      // في النافذة label هنا قمنا بتحديد مكان ظهور الكائن
      label.setTranslateX(180);
      label.setTranslateY(140);

      // في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
      Group root = new Group();

      // root في الكائن label هنا قمنا بإضافة الكائن
      root.getChildren().add(label);

      // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
      Scene scene = new Scene(root, 500, 300);

      // هنا وضعنا عنوان للنافذة
      stage.setTitle("JavaFX Label");

      // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
      stage.setScene(scene);

      // هنا قمنا بإظهار النافذة
      stage.show();

      }

      // هنا قمنا بتشغيل التطبيق
      public static void main(String[] args) {
      launch(args);
      }

      }
    

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

طريقة إضافة Label في javafx




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

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

مثال

Main.java
      import javafx.application.Application;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Label;
      import javafx.scene.paint.Color;
      import javafx.scene.text.Font;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // يمثل العنوان الذي نريد إضافته في النافذة Label هنا قمنا بإنشاء كائن من الكلاس
      Label label = new Label("Welcome to  alawirisaddam.com. blogspot.com");

      // في النافذة label هنا قمنا بتحديد مكان ظهور الكائن
      label.setTranslateX(75);
      label.setTranslateY(130);

      // label هنا قمنا بتغيير نوع و حجم خط الكائن
      label.setFont(new Font("Cambria", 32));

      // label هنا قمنا بتغيير لون خط الكائن
      label.setTextFill(Color.PURPLE);

      // في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
      Group root = new Group();

      // root في الكائن label هنا قمنا بإضافة الكائن
      root.getChildren().add(label);

      // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
      Scene scene = new Scene(root, 500, 300);

      // هنا وضعنا عنوان للنافذة
      stage.setTitle("JavaFX Label");

      // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
      stage.setScene(scene);

      // هنا قمنا بإظهار النافذة
      stage.show();

      }

      // هنا قمنا بتشغيل التطبيق
      public static void main(String[] args) {
      launch(args);
      }

      }
    

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

طريقة تغيير حجم و لون خط الـ Label في javafx




 طريقة تغيير لون خلفية الـ Label و إضافة هامش حوله 

المثال التالي يعلمك طريقة تغيير لون خلفية الـ Label و إضافة هامش حوله .

مثال

Main.java
      import javafx.application.Application;
      import javafx.geometry.Insets;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Label;
      import javafx.scene.layout.Background;
      import javafx.scene.layout.BackgroundFill;
      import javafx.scene.layout.CornerRadii;
      import javafx.scene.paint.Color;
      import javafx.scene.text.Font;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // يمثل العنوان الذي نريد إضافته في النافذة Label هنا قمنا بإنشاء كائن من الكلاس
      Label label = new Label("Welcome to  alawirisaddam.com. blogspot.com");

      // في النافذة label هنا قمنا بتحديد مكان ظهور الكائن
      label.setTranslateX(100);
      label.setTranslateY(120);

      // label هنا قمنا بتغيير نوع و حجم خط الكائن
      label.setFont(new Font("Arial", 24));

      // label هنا قمنا بتغيير لون خط الكائن
      label.setTextFill(Color.CYAN);

      // label هنا قمنا بتغيير لون خلفية الكائن
      label.setBackground(new Background(new BackgroundFill(Color.GRAY, CornerRadii.EMPTY, Insets.EMPTY)));

      // label هنا قمنا بإضافة هامش حجمه 10 بيكسل حول الكائن
      label.setPadding(new Insets(10));

      // في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
      Group root = new Group();

      // root في الكائن label هنا قمنا بإضافة الكائن
      root.getChildren().add(label);

      // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
      Scene scene = new Scene(root, 500, 300);

      // هنا وضعنا عنوان للنافذة
      stage.setTitle("JavaFX Label");

      // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
      stage.setScene(scene);

      // هنا قمنا بإظهار النافذة
      stage.show();

      }

      // هنا قمنا بتشغيل التطبيق
      public static void main(String[] args) {
      launch(args);
      }

      }
    

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

طريقة تغيير لون خلفية الـ Label و إضافة هامش حوله




 طريقة إضافة أيقونة للـ Label مع تحديد مكان ظهورها

المثال التالي يعلمك طريقة إضافة أيقونة للـ Label مع تحديد مكان ظهورها .

ملاحظة: عليك إنشاء مجلد و وضع الأيقونة التي تريد وضعها للـ Label بداخله كما في الصورة التالية.



الصورة توضح أننا أضفنا مجلد إسمه images و وضعنا فيه صورة إسمها smily-face.png.

⇓ تحميل مجلد الصور


مثال

Main.java
      import javafx.application.Application;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.ContentDisplay;
      import javafx.scene.control.Label;
      import javafx.scene.image.Image;
      import javafx.scene.image.ImageView;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // يمثل الصورة التي سنضعها كأيقونة Image هنا قمنا بإنشاء كائن من الكلاس
      Image image = new Image(getClass().getResourceAsStream("/images/smily-face.png"));

      // مع وضع نص و أيقونة لكل كائن منهم Label هنا قمنا بإنشاء 7 كائنات من الكلاس
      Label label_1 = new Label("Label 1", new ImageView(image));
      Label label_2 = new Label("Label 2", new ImageView(image));
      Label label_3 = new Label("Label 3", new ImageView(image));
      Label label_4 = new Label("Label 4", new ImageView(image));
      Label label_5 = new Label("Label 5", new ImageView(image));
      Label label_6 = new Label("Label 6", new ImageView(image));
      Label label_7 = new Label("Label 7", new ImageView(image));

      // قمنا بإنشائه Label هنا قمنا بتحديد مكان ظهور الأيقونة بالنسبة لكل
      label_1.setContentDisplay(ContentDisplay.LEFT);           // هنا وضعنا الصورة يسار النص
      label_2.setContentDisplay(ContentDisplay.BOTTOM);         // هنا وضعنا الصورة فوق النص
      label_3.setContentDisplay(ContentDisplay.TOP);            // هنا وضعنا الصورة تحت النص
      label_4.setContentDisplay(ContentDisplay.RIGHT);          // هنا وضعنا الصورة يمين النص
      label_5.setContentDisplay(ContentDisplay.CENTER);         // هنا وضعنا النص على الصورة
      label_6.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);   // هنا قمنا بإظهار الصورة فقط
      label_7.setContentDisplay(ContentDisplay.TEXT_ONLY);      // هنا بإظهار النص فقط

      // في النافذة label_1 هنا قمنا بتحديد مكان ظهور الكائن
      label_1.setTranslateX(20);
      label_1.setTranslateY(50);

      // في النافذة label_2 هنا قمنا بتحديد مكان ظهور الكائن
      label_2.setTranslateX(170);
      label_2.setTranslateY(50);

      // في النافذة label_3 هنا قمنا بتحديد مكان ظهور الكائن
      label_3.setTranslateX(280);
      label_3.setTranslateY(50);

      // في النافذة label_4 هنا قمنا بتحديد مكان ظهور الكائن
      label_4.setTranslateX(390);
      label_4.setTranslateY(50);

      // في النافذة label_5 هنا قمنا بتحديد مكان ظهور الكائن
      label_5.setTranslateX(80);
      label_5.setTranslateY(200);

      // في النافذة label_6 هنا قمنا بتحديد مكان ظهور الكائن
      label_6.setTranslateX(230);
      label_6.setTranslateY(200);

      // في النافذة label_7 هنا قمنا بتحديد مكان ظهور الكائن
      label_7.setTranslateX(370);
      label_7.setTranslateY(200);

      // في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
      Group root = new Group();

      // root في الكائن Labels هنا قمنا بإضافة جميع الـ
      root.getChildren().add(label_1);
      root.getChildren().add(label_2);
      root.getChildren().add(label_3);
      root.getChildren().add(label_4);
      root.getChildren().add(label_5);
      root.getChildren().add(label_6);
      root.getChildren().add(label_7);

      // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
      Scene scene = new Scene(root, 500, 300);

      // هنا وضعنا عنوان للنافذة
      stage.setTitle("JavaFX Label");

      // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
      stage.setScene(scene);

      // هنا قمنا بإظهار النافذة
      stage.show();

      }

      // هنا قمنا بتشغيل التطبيق
      public static void main(String[] args) {
      launch(args);
      }

      }
    

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

طريقة إضافة أيقونة للـ Label مع تحديد مكان ظهورها




 طريقة عرض نص الـ Label بشكل مائل

المثال التالي يعلمك طريقة عرض نص الـ Label بشكل مائل.

مثال

Main.java
      import javafx.application.Application;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Label;
      import javafx.scene.text.Font;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // تمثل العناوين التي سنضيفها في النافذة Label هنا قمنا بإنشاء 3 كائنات من الكلاس
      Label label_1 = new Label("Label 1");
      Label label_2 = new Label("Label 2");
      Label label_3 = new Label("Label 3");

      // التي سيتم إضافتها في النافذة Labels هنا قمنا بتحديد مكان ظهور جميع الـ
      label_1.setTranslateX(60);
      label_1.setTranslateY(90);
      label_2.setTranslateX(210);
      label_2.setTranslateY(90);
      label_3.setTranslateX(350);
      label_3.setTranslateY(90);

      // Labels هنا قمنا بتغيير نوع و حجم جميع خط الـ
      label_1.setFont(new Font("Arial", 24));
      label_2.setFont(new Font("Arial", 24));
      label_3.setFont(new Font("Arial", 24));

      // Labels هنا قمنا بتحديد درجة ميلان جميع الـ
      label_1.setRotate(45);
      label_2.setRotate(90);
      label_3.setRotate(-45);

      // في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
      Group root = new Group();

      // root في الكائن Labels هنا قمنا بإضافة جميع الـ
      root.getChildren().add(label_1);
      root.getChildren().add(label_2);
      root.getChildren().add(label_3);

      // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
      Scene scene = new Scene(root, 500, 200);

      // هنا وضعنا عنوان للنافذة
      stage.setTitle("JavaFX Label");

      // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
      stage.setScene(scene);

      // هنا قمنا بإظهار النافذة
      stage.show();

      }

      // هنا قمنا بتشغيل التطبيق
      public static void main(String[] args) {
      launch(args);
      }

      }
    

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

طريقة عرض نص الـ Label بشكل مائل



 طريقة تنفيذ أوامر عند تمرير الفأرة فوق الـLabel

المثال التالي يعلمك طريقة تنفيذ أوامر عند تمرير الفأرة فوق الـLabel .

مثال

Main.java
      import javafx.application.Application;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Label;
      import javafx.scene.input.MouseEvent;
      import javafx.scene.paint.Color;
      import javafx.scene.text.Font;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // يمثل العنوان الذي نريد إضافته في النافذة Label هنا قمنا بإنشاء كائن من الكلاس
      Label label = new Label("Put the mouse Over Me!");

      // في النافذة label هنا قمنا بتحديد مكان ظهور الكائن
      label.setTranslateX(120);
      label.setTranslateY(130);

      // label هنا قمنا بتغيير نوع و حجم خط الكائن
      label.setFont(new Font("Arial", 24));

      // في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
      Group root = new Group();

      // root في الكائن label هنا قمنا بإضافة الكائن
      root.getChildren().add(label);

      // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
      Scene scene = new Scene(root, 500, 300);

      // هنا وضعنا عنوان للنافذة
      stage.setTitle("JavaFX Label");

      // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
      stage.setScene(scene);

      // هنا قمنا بإظهار النافذة
      stage.show();

      // label هنا قمنا بتحديد ماذا سيحدث عند تمرير الفأرة فوق الكائن
      label.setOnMouseEntered((MouseEvent e) -> {
      label.setTextFill(Color.RED);
      label.setScaleX(1.2);
      label.setScaleY(1.2);
      });

      // label هنا قمنا بتحديد ماذا سيحدث عند إبعاد الفأرة من فوق الكائن
      label.setOnMouseExited((MouseEvent e) -> {
      label.setTextFill(Color.BLACK);
      label.setScaleX(1);
      label.setScaleY(1);
      });

      }

      // هنا قمنا بتشغيل التطبيق
      public static void main(String[] args) {
      launch(args);
      }

      }
    

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

طريقة تنفيذ أوامر عند تمرير الفأرة فوق الـLabel




الكلاس javafx Button  , الكلاس javafx textfield

كورس تعلم javaFX