الكلاس Pane في javafx

 شرح الكلاس  Pane

الكلاس Pane يستخدم لإنشاء حاوية لا تترتب فيها الأشياء بشكل تلقائي, و بالتالي أنت من تتولى تحديد أماكن الأشياء التي تضيفها فيها تماماَ مثل الكلاس Group الذي شرحناه في الدرس السابق مع بعض الفوارق التي سنتطرق إليها .

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


معلومة عن الكلاس  Pane

حجم كائن الـ Pane يمكن تحديده لكن لا يمكن جعله يتغير بشكل تلقائي مع تغير حجم النافذة.
أيضاً, حجم الأشياء التي نضعها بداخل كائن الـ Pane يمكن تحديده لكن لا يمكن جعله تلقائي نسبة لحجم الـ Pane.


بناء الكلاس Pane

	@DefaultProperty(value="children")
	public class Pane
	extends Region
  

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

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

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

دوال الكلاس Pane

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

الدالة مع تعريفها
public void setPrefSize(double prefWidth, double prefHeight) تستخدم لتحديد حجم كائن الـ Pane الذي قام باستدعائها.
  • مكان الباراميتر prefWidth نضع رقم يمثل عرض الـ Pane بالـ Pixel.

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

public final void setTranslateX(double value) تستخدم لتحديد مكان كائن الـ Pane الذي قام باستدعائها أفقياً.
مكان الباراميتر value نضع رقم يمثل كم Pixel سيتم إزاحته من اليسار إلى اليمين.
public final void setTranslateY(double value) تستخدم لتحديد مكان كائن الـ Pane الذي قام باستدعائها عامودياً.
مكان الباراميتر value نضع رقم يمثل كم Pixel سيتم إزاحته من الأعلى إلى الأسفل.
public final void setBackground(Background value) تستخدم لوضع لون أو صورة كخلفية لكائن الـ Pane الذي قام بإستدعائها.
مكان الباراميتر value نضع كائن من الكلاس Background يشير إلى درجة اللون أو الصورة التي سيتم وضعها كخلفية.
public final void setStyle(String value) تستخدم لتعديل تصميم كائن الـ Pane الذي قام بإستدعائها.
مكان الباراميتر value يمكنك تمرير إسم و قيمة أي خاصية تريد تعديلها في كائن الـ Pane بأسلوب لغة CSS لإظهاره بالشكل الذي تريده.
public ObservableList<Node> getChildren() ترجع كائن نوعه ObservableList يمثل محتوى كائن الـ Pane الذي قام بإستدعائها مما يجعلك قادراً على إضافة كائنات جديدة أو حذف كائنات موجودة فيه.

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

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

المثال التالي يعلمك طريقة إنشاء كائن من الكلاس Pane و وضعه كـ Root Node.
ملاحظة: النافذة تحتوي على 3 كائنات من الكلاس Button لكنها موضوعة فوق بعضها البعض, و لهذا السبب آخر Button هو فقط الذي يظهر.


مثال 

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

		public class Main extends Application {

		@Override
		public void start(Stage stage) {

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

        // root هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن
        Button button1 = new Button("Button 1");
        Button button2 = new Button("Button 2");
        Button button3 = new Button("Button 3");

        // root في الكائن button3 و button2 و button1 هنا قمنا بإضافة الكائنات
        root.getChildren().add(button1);
        root.getChildren().add(button2);
        root.getChildren().add(button3);

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

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

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

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

		}

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

		}
	  

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


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

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

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


مثال

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

	  public class Main extends Application {

	  @Override
	  public void start(Stage stage) {

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

	  // root هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن
	  Button button1 = new Button("Button 1");
	  Button button2 = new Button("Button 2");
	  Button button3 = new Button("Button 3");

	  // root هنا قمنا بتحديد حجم جميع الأشياء التي سنضيفها في الكائن
	  button1.setPrefSize(150, 30);
	  button2.setPrefSize(150, 30);
	  button3.setPrefSize(150, 30);

	  // root هنا قمنا بتحديد أماكن ظهور الأشياء التي سنضيفها في الكائن
	  button1.setTranslateX(50);
	  button1.setTranslateY(60);
	  button2.setTranslateX(100);
	  button2.setTranslateY(110);
	  button3.setTranslateX(150);
	  button3.setTranslateY(160);

	  // root في الكائن button3 و button2 و button1 هنا قمنا بإضافة الكائنات
	  root.getChildren().add(button1);
	  root.getChildren().add(button2);
	  root.getChildren().add(button3);

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

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

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

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

	  }

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

	  }
	

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


طريقة تحديد حجم و مكان ظهور الأشياء التي نضيفها في Pane في JavaFX

 تحديد لون خلفية الـ Pane

المثال التالي يعلمك طريقة تحديد لون خلفية الـ Pane.
كما أننا سنقوم بوضع Pane بداخل Pane تمهيداً للتمرين التالي.


مثال

Main.java
	  import javafx.application.Application;
	  import javafx.scene.Scene;
	  import javafx.stage.Stage;
	  import javafx.scene.layout.Pane;

	  public class Main extends Application {

	  @Override
	  public void start(Stage stage) {

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

	  // root و الذي ننوي وضعه بداخل الكائن Pane هنا قمنا بإنشاء كائن آخر من الكلاس
	  Pane pane = new Pane();

	  // زهري root هنا جعلنا لون خلفية الكائن
	  root.setStyle("-fx-background-color: pink");

	  // بالإضافة إلى حجمه و مكان ظهوره pane هنا قمنا بتحديد لون خلفية الكائن
	  pane.setStyle("-fx-background-color: cadetblue");
	  pane.setPrefSize(250, 200);
	  pane.setTranslateX(50);
	  pane.setTranslateY(25);

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

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

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

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

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

	  }

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

	  }
	

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


طريقة تحديد لون خلفية الـ Pane في JavaFX

 طريقة وضع Pane بداخل Pane

المثال التالي يعلمك طريقة وضع Pane بداخل Pane.
ملاحظة: هنا يجب تحديد أماكن الأشياء التي نضيفها في الـ Pane الداخلي نسبة لمكانه و ليس نسبة لمكان الـ Pane الخارجي.


مثال

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

	  public class Main extends Application {

	  @Override
	  public void start(Stage stage) {

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

	  // root و الذي ننوي وضعه بداخل الكائن Pane هنا قمنا بإنشاء كائن آخر من الكلاس
	  Pane pane = new Pane();

	  // زهري root هنا جعلنا لون خلفية الكائن
	  root.setStyle("-fx-background-color: pink");

	  // بالإضافة إلى حجمه و مكان ظهوره pane هنا قمنا بتحديد لون خلفية الكائن
	  pane.setStyle("-fx-background-color: cadetblue");
	  pane.setPrefSize(250, 200);
	  pane.setTranslateX(50);
	  pane.setTranslateY(25);

	  // pane هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن
	  Button button1 = new Button("Button 1");
	  Button button2 = new Button("Button 2");
	  Button button3 = new Button("Button 3");

	  // pane هنا قمنا بتحديد حجم الأشياء التي سنضيفها في الكائن
	  button1.setPrefSize(150, 30);
	  button2.setPrefSize(150, 30);
	  button3.setPrefSize(150, 30);

	  // pane نسبة لموقع الكائن pane هنا قمنا بتحديد مكان ظهور الأشياء التي سنضيفها في الكائن
	  button1.setTranslateX(50);
	  button1.setTranslateY(30);
	  button2.setTranslateX(50);
	  button2.setTranslateY(90);
	  button3.setTranslateX(50);
	  button3.setTranslateY(150);

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

	  // pane في الكائن button3 و button2 و button1 هنا قمنا بإضافة الكائنات
	  pane.getChildren().add(button1);
	  pane.getChildren().add(button2);
	  pane.getChildren().add(button3);

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

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

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

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

	  }

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

	  }
	

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

طريقة وضع Pane بداخل Pane في JavaFX


كورس تعلم javaFX