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

شرح الكلاس  Group 

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

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

حجم كائن الـ Group لا يمكن تحديده أو جعله يتغير بشكل تلقائي مع تغير حجم النافذة لأنه إفتراضياً لا حجم له.
حجم الأشياء التي نضعها بداخل كائن الـ Group هو الذي يجعل حجمه يتغير لأن حجمه يكبر أو يصغر بناءاً على حجم الأشياء الموضوعة فيه.


معلومة تقنية عن Group

لا تستطيع وضع لون خلفية لكائن الـ Group نفسه.
و في حال كان كائن الـ Group موضوع كـ Root Node و قمت بتغيير لون خلفيته فإن خلفية النافذة هي من ستتغير و ليس خلفية كائن الـ Group.

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


بناء الكلاس Group

@DefaultProperty(value="children")
public class Group
extends Parent
	

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

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

الكونستركتور مع تعريفه
Group() ينشئ كائن من الكلاس Group يمثل حاوية فارغة.
Group(Node... children) ينشئ كائن من الكلاس Group يمثل حاوية مع تحديد الأشياء التي نريد وضعها فيها.
مكان الباراميتر children نمرر الأشياء التي نريد وضعها فيها مع وضع فاصلة بين كل شيئين.
Group(Collection<Node> children) ينشئ كائن من الكلاس Group يمثل حاوية مع تحديد الأشياء التي نريد وضعها فيها.
مكان الباراميتر children نمرر كائن من إحدى الكلاسات التي تطبق الإنترفيس Collection و الذي يحتوي على الأشياء التي نريد وضعها فيها.
ترمي الإستثناء NullPointerException إذا مررت لها مكان الباراميتر children كائن فارغ.

دوال الكلاس Group

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

الدالة مع تعريفها
public ObservableList<Node> getChildren() ترجع كائن نوعه ObservableList يمثل محتوى كائن الـ Group الذي قام بإستدعائها مما يجعلك قادراً على إضافة كائنات جديدة أو حذف كائنات موجودة فيه.

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

أمثلة مفصلة تفصيل لفهم الكلاس group في الجافا Fx .

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

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


مثال

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

	  public class Main extends Application {

	  @Override
	  public void start(Stage stage) {

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

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

	  // root و الذي بدوره سيضيفهم أيضاً في الكائن list في الكائن 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 Group");

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

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

	  }

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

	  }
	

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

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

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

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


مثال

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

	  public class Main extends Application {

	  @Override
	  public void start(Stage stage) {

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

	  // 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 و الذي بدوره سيضيفهم أيضاً في الكائن list في الكائن 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 Group");

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

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

	  }

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

	  }
	

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

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

كورس كامل  javaFX