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

شرح الكلاس  StackPane

الكلاس StackPane يستخدم لإنشاء حاوية تترب الأشياء فيها فوق بعضها البعض.

إفتراضياً, الأشياء التي نضيفها في كائن الـ StackPane تظهر فوق بعضها في وسطه.
و طبعاً تستطيع تحديد من أي جهة تريد أن تظهر الأشياء التي يتم إضافتها فيه.


بناء الكلاس StackPane

public class StackPane
extends Pane
	

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

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

الكونستركتور مع تعريفه
StackPane() ينشئ كائن من الكلاس StackPane يمثل حاوية فارغة ترتب الأشياء التي نضيفها فيها فوق بعضها.
StackPane(Node... children) ينشئ كائن من الكلاس StackPane يمثل حاوية ترتب الأشياء التي نضيفها فيها فوق بعضها مع تحديد الأشياء التي نريد وضعها فيها.
مكان الباراميتر children نمرر الأشياء التي نريد وضعها فيها مع وضع فاصلة بين كل شيئين.

دوال الكلاس StackPane

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

الدالة مع تعريفها
public final void setAlignment(Pos value) تستخدم لتحديد مكان ظهور الأشياء التي سيتم وضعها في كائن الـ StackPane الذي قام باستدعائها.

مكان الباراميتر value نمرر إحدى ثوابت الكلاس Pos:
  • TOP_LEFT: يظهر المحتوى في الأعلى ناحية اليسار.

  • TOP_CENTER: يظهر المحتوى في الأعلى و في الوسط.

  • TOP_RIGHT: يظهر المحتوى في الأعلى ناحية اليمين.

  • CENTER_LEFT: يظهر المحتوى في الوسط ناحية اليسار.

  • CENTER: يظهر المحتوى في الوسط تماماً.

  • CENTER_RIGHT: يظهر في الوسط ناحية اليمين.

  • BOTTOM_LEFT: يظهر المحتوى في الأسفل ناحية اليسار.

  • BOTTOM_CENTER: يظهر المحتوى في الأسفل و في الوسط.

  • BOTTOM_RIGHT: يظهر المحتوى في الأسفل ناحية اليمين.

public final void setPadding(Insets value) تستخدم لإضافة فراغ حول كائن الـ StackPane الذي قام باستدعائها.

مكان الباراميتر value نمرر كائن من الكلاس Insets نحدد فيه حجم الفراغ الذي سيتم إضافته من الجهات الأربعة ( فوقه, يمينه, تحته, يساره ).
public static void setMargin(Node child, Insets value) تستخدم لإضافة فراغ حول أي شيء موضوع كقسم بداخل StackPane.
مكان الباراميتر child نمرر الشيء الذي نريد إضافة فراغ حوله.
مكان الباراميتر value نمرر كائن من الكلاس Insets نحدد فيه حجم الفراغ الذي سيتم إضافته للشيء من الجهات الأربعة ( فوقه, يمينه, تحته, يساره ).
public final void setStyle(String value) تستخدم لتعديل تصميم كائن الـ StackPane الذي قام بإستدعائها.
مكان الباراميتر value يمكنك تمرير إسم و قيمة أي خاصية تريد تعديلها في كائن الـ StackPane بأسلوب لغة CSS لإظهاره بالشكل الذي تريده.
public ObservableList<Node> getChildren() ترجع كائن نوعه ObservableList يمثل محتوى كائن الـ StackPane الذي قام بإستدعائها مما يجعلك قادراً على إضافة كائنات جديدة أو حذف كائنات موجودة فيه.

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


المثال الأول

 طريقة وضع محتوى النافذة في StackPane

المثال التالي يعلمك طريقة إنشاء كائن من الكلاس StackPane و وضعه كـ Root Node.


مثال

Main.java
        import javafx.application.Application;
        import javafx.scene.Scene;
        import javafx.stage.Stage;
        import javafx.scene.control.Button;
        import javafx.scene.layout.StackPane;

        public class Main extends Application {

        @Override
        public void start(Stage stage) {

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

        // root و الذي سنضيفه في الكائن Button هنا قمنا بإنشاء جميع كائن من الكلاس
        Button button = new Button("Button");

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

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

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

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

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

        }

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

        }
      

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

طريقة وضع محتوى النافذة في StackPane




المثال الثاني

 طريقة عرض أشياء فوق شيء بواسطة الكلاس StackPane

المثال التالي يعلمك طريقة عرض أشياء فوق شيء بواسطة الكلاس StackPane.


مثال

Main.java
        import javafx.application.Application;
        import javafx.scene.Scene;
        import javafx.stage.Stage;
        import javafx.scene.control.Label;
        import javafx.scene.layout.StackPane;
        import javafx.scene.paint.Color;
        import javafx.scene.shape.Rectangle;
        import javafx.scene.text.Font;

        public class Main extends Application {

        @Override
        public void start(Stage stage) {

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

        // root هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن
        Rectangle rectangle = new Rectangle(160, 100, Color.CADETBLUE);  // هذا الكائن يمثل مستطيل لونه أزرق
        Label label = new Label("Rectangle");                            // هذا الكائن يمثل النص الذي سيظهر فوقه

        // label هنا قمنا بتغير لون و حجم خط الكائن
        label.setTextFill(Color.WHITE);
        label.setFont(new Font(20));

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

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

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

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

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

        }

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

        }
      

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

طريقة عرض أشياء فوق شيء بواسطة الكلاس StackPane






المثال الثالث

 طريقة تحديد أمكان الأشياء التي تم وضعها في StackPane

المثال التالي يعلمك طريقة تحديد أمكان الأشياء التي تم وضعها في StackPane.


مثال

Main.java
        import javafx.application.Application;
        import javafx.scene.Scene;
        import javafx.stage.Stage;
        import javafx.geometry.Pos;
        import javafx.scene.layout.StackPane;
        import javafx.scene.paint.Color;
        import javafx.scene.shape.Rectangle;

        public class Main extends Application {

        @Override
        public void start(Stage stage) {

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

        // root هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن
        Rectangle rectangle1 = new Rectangle(200, 150, Color.RED);      // هذا الكائن يمثل مستطيل لونه أحمر
        Rectangle rectangle2 = new Rectangle(200, 150, Color.YELLOW);   // هذا الكائن يمثل مستطيل لونه أصفر
        Rectangle rectangle3 = new Rectangle(200, 150, Color.BLUE);     // هذا الكائن يمثل مستطيل لونه أزرق

        // root هنا قمنا بتحديد مكان ظهور الأشياء التي سنضيفها في الكائن
        StackPane.setAlignment(rectangle1, Pos.TOP_RIGHT);
        StackPane.setAlignment(rectangle2, Pos.CENTER);
        StackPane.setAlignment(rectangle3, Pos.BOTTOM_LEFT);

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

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

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

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

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

        }

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

        }
      

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

طريقة تحديد أمكان الأشياء التي تم وضعها في StackPane






المثال الرابع

 طريقة إضافة مسافة فارغة حول الـStackPane

المثال التالي يعلمك طريقة إضافة مسافة فارغة ( هامش ) حول الـ StackPane حتى لا يلامس النافذة.


مثال

Main.java
        import javafx.application.Application;
        import javafx.scene.Scene;
        import javafx.stage.Stage;
        import javafx.geometry.Insets;
        import javafx.geometry.Pos;
        import javafx.scene.layout.StackPane;
        import javafx.scene.paint.Color;
        import javafx.scene.shape.Rectangle;

        public class Main extends Application {

        @Override
        public void start(Stage stage) {

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

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

        // root هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن
        Rectangle rectangle1 = new Rectangle(200, 150, Color.RED);      // هذا الكائن يمثل مستطيل لونه أحمر
        Rectangle rectangle2 = new Rectangle(200, 150, Color.YELLOW);   // هذا الكائن يمثل مستطيل لونه أصفر
        Rectangle rectangle3 = new Rectangle(200, 150, Color.BLUE);     // هذا الكائن يمثل مستطيل لونه أزرق

        // root هنا قمنا بتحديد مكان ظهور الأشياء التي سنضيفها في الكائن
        StackPane.setAlignment(rectangle1, Pos.TOP_RIGHT);
        StackPane.setAlignment(rectangle2, Pos.CENTER);
        StackPane.setAlignment(rectangle3, Pos.BOTTOM_LEFT);

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

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

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

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

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

        }

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

        }
      

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

طريقة إضافة مسافة فارغة حول الـStackPane








كورس  javaFX