في الدرس السابق تكلمنا عن بنية مكتبة 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 يمثل نص و أيقونة معاً كعنوان.
|
دوال الكلاس 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 الذي قام باستدعائها.
|
|
public final void setContentDisplay(ContentDisplay value)
تستخدم لتحديد مكان ظهور الأيقونة التي تم إضافتها لكائن الـ Label الذي قام باستدعائها.مكان الباراميتر value نضع إحدى ثوابت الكلاس ContentDisplay :
|
|
public final void setDisable(boolean value)
تستخدم لجعل نص كائن الـ Label الذي قام باستدعائها يبدو غير مفعّل, أي يصبح لونه باهتاً و غير قابل للنقر عليه.مكان الباراميتر value نضع القيمة true لجعله غير مفعّل. |
|
public final void setStyle(String value)
تستخدم لتعديل تصميم الـ Label الذي قام بإستدعائها.مكان الباراميتر value يمكنك تمرير إسم و قيمة أي خاصية تريد تعديلها في كائن الـ Label بأسلوب لغة CSS لإظهاره بالشكل الذي تريده. |
أمثلة شاملة في الكلاس Label
طريقة إنشاء كائن من الكلاس Label
و إضافته في النافذة
المثال التالي يعلمك طريقة إنشاء كائن من الكلاس Label
و إضافته في النافذة.
مثال
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
المثال التالي يعلمك طريقة تغيير نوع و حجم و لون خط الـ Label
.
مثال
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
و إضافة هامش حوله
المثال التالي يعلمك طريقة تغيير لون خلفية الـ Label
و إضافة هامش حوله .
مثال
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
بداخله كما في الصورة التالية.
الصورة توضح أننا أضفنا مجلد إسمه images
و وضعنا فيه صورة إسمها smily-face.png.
⇓ تحميل مجلد الصور
مثال
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
بشكل مائل.
مثال
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 .
مثال
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); } }
•ستظهر لك النافذة التالية عند التشغيل.
الكلاس javafx Button , الكلاس javafx textfield