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

شرح  الكلاس TilePane

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

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

الفرق الوحيد بين الكلاس TilePane و الكلاس FlowPane هو أن الكلاس TilePane يضع هامش حول جميع الأشياء الموضوعة فيه بناءاً على مساحة أكبر شيء تم وضعه فيه.

فعلياً, الكلاس TilePane يقوم بترتيب الأشياء الموضوعة فيه كالتالي:
في البداية, يقوم بحساب مساحة كل شيء تم وضعه فيه.
بعدها, بناءاً على مساحة أكبر شيء وجده يقوم بإضافة هامش حول جميع الأشياء الأخرى حتى يعوض فارق الحجم بينهم.
هكذا تصبح جميع الأشياء الموجودة فيه تظهر بشكل متوازي من جميع الجهات كأنهم موضوعين بداخل جدول وهمي حيث تجد الأشياء بعيدة عن بعدها و كأنه يوجد حدود متساوية بينهم.


بناء الكلاس TilePane

public class TilePane
extends Pane
	

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

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

الكونستركتور مع تعريفه
public TilePane() ينشئ كائن من الكلاس TilePane يمثل حاوية فارغة ترتب الأشياء التي نضيفها فيها وراء بعضها بشكل أفقي من الأعلى و من جهة اليسار.
public TilePane(Node... children) ينشئ كائن من الكلاس TilePane يمثل حاوية ترتب الأشياء التي نضيفها فيها وراء بعضها البعض بشكل أفقي من الأعلى و من جهة اليسار مع تحديد الأشياء التي نريد وضعها فيها.
مكان الباراميتر children نمرر الأشياء التي نريد وضعها فيها مع وضع فاصلة بين كل شيئين.
public TilePane(double hgap, double vgap) ينشئ كائن من الكلاس TilePane يمثل حاوية فارغة ترتب الأشياء التي نضيفها فيها وراء بعضها البعض بشكل أفقي من الأعلى و من جهة اليسار مع تحديد حجم المسافة الفارغة بين الأشياء التي نضيفها فيها.
  • مكان الباراميتر hgap نمرر رقم يمثل حجم المسافة الفارغة أفقياً بالـ Pixel بين كل شيئين نضيفهما فيها.

  • مكان الباراميتر vgap نمرر رقم يمثل حجم المسافة الفارغة عامودياً بالـ Pixel بين كل شيئين نضيفهما فيها.

public TilePane(double hgap, double vgap, Node... children) ينشئ كائن من الكلاس TilePane يمثل حاوية ترتب الأشياء التي نضيفها فيها بشكل وراء بعضها البعض بشكل أفقي مع تحديد الأشياء التي نريد وضعها فيها و حجم المسافة الفارغة بينهم.
  • مكان الباراميتر hgap نمرر رقم يمثل حجم المسافة الفارغة أفقياً بالـ Pixel بين كل شيئين نضيفهما فيها.

  • مكان الباراميتر vgap نمرر رقم يمثل حجم المسافة الفارغة عامودياً بالـ Pixel بين كل شيئين نضيفهما فيها.

  • مكان الباراميتر children نمرر الأشياء التي نريد وضعها فيها مع وضع فاصلة بين كل شيئين.

public TilePane(Orientation orientation) ينشئ كائن من الكلاس TilePane يمثل حاوية ترتب الأشياء التي نضيفها فيها وراء بعضها البعض مع تحديد ما إذا كانت ستظهرهم بشكل أفقي أو عامودي.
مكان الباراميتر orientation نضع Orientation.VERTICAL في حال أردنا إظهار محتوى الـ TilePane عامودياً.
و نضع Orientation.HORIZONTAL في حال أردنا إظهار محتوى الـ TilePane أفقياً.
public TilePane(Orientation orientation, Node... children) ينشئ كائن من الكلاس TilePane يمثل حاوية ترتب الأشياء التي نضيفها فيها وراء بعضها البعض مع تحديد ما إذا كانت ستظهرهم بشكل أفقي أو عامودي و تحديد الأشياء التي نريد وضعها فيها.
  • مكان الباراميتر orientation نضع Orientation.VERTICAL في حال أردنا إظهار محتوى الـ TilePane عامودياً, أو نضع Orientation.HORIZONTAL في حال أردنا إظهار محتوى الـ TilePane أفقياً.

  • مكان الباراميتر children نمرر الأشياء التي نريد وضعها فيها مع وضع فاصلة بين كل شيئين.

public TilePane(Orientation orientation, double hgap, double vgap) ينشئ كائن من الكلاس TilePane يمثل حاوية ترتب الأشياء التي نضيفها فيها وراء بعضها البعض مع تحديد ما إذا كانت ستظهرهم بشكل أفقي أو عامودي و تحديد حجم المسافة الفارغة بينهم.
  • مكان الباراميتر orientation نضع Orientation.VERTICAL في حال أردنا إظهار محتوى الـ TilePane عامودياً, أو نضع Orientation.HORIZONTAL في حال أردنا إظهار محتوى الـ TilePane أفقياً.

  • مكان الباراميتر hgap نمرر رقم يمثل حجم المسافة الفارغة أفقياً بالـ Pixel بين كل شيئين نضيفهما فيها.

  • مكان الباراميتر vgap نمرر رقم يمثل حجم المسافة الفارغة عامودياً بالـ Pixel بين كل شيئين نضيفهما فيها.

public TilePane(Orientation orientation, double hgap, double vgap, Node... children) ينشئ كائن من الكلاس TilePane يمثل حاوية ترتب الأشياء التي نضيفها فيها وراء بعضها البعض مع تحديد ما إذا كانت ستظهرهم بشكل أفقي أو عامودي و تحديد حجم المسافة الفارغة بينهم و تحديد الأشياء التي نريد وضعها فيها.
  • مكان الباراميتر orientation نضع Orientation.VERTICAL في حال أردنا إظهار محتوى الـ TilePane عامودياً, أو نضع Orientation.HORIZONTAL في حال أردنا إظهار محتوى الـ TilePane أفقياً.

  • مكان الباراميتر hgap نمرر رقم يمثل حجم المسافة الفارغة أفقياً بالـ Pixel بين كل شيئين نضيفهما فيها.

  • مكان الباراميتر vgap نمرر رقم يمثل حجم المسافة الفارغة عامودياً بالـ Pixel بين كل شيئين نضيفهما فيها.

  • مكان الباراميتر children نمرر الأشياء التي نريد وضعها فيها مع وضع فاصلة بين كل شيئين.

دوال الكلاس TilePane

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

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

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

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

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

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

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

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

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

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

public final void setOrientation(Orientation orientation) تستخدم لتحديد ما إذا كان محتوى كائن الـ TilePane الذي قام بإستدعائها سيظهر بشكل أفقي أو عامودي.
مكان الباراميتر orientation نضع إحدى ثوابت الكلاس Orientation:
  • Orientation.VERTICAL: يجعل محتوى الـ TilePane يظهر عامودياً.

  • Orientation.HORIZONTAL: يجعل محتوى الـ TilePane يظهر أفقياً.

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

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

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

المثال التالي يعلمك طريقة إنشاء كائن من الكلاس TilePane و وضعه كـ 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.TilePane;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

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

      // root هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن
      Button button1 = new Button("Monday");
      Button button2 = new Button("Tuesday");
      Button button3 = new Button("Wednesday");
      Button button4 = new Button("Thursday");
      Button button5 = new Button("Friday");
      Button button6 = new Button("Saturday");
      Button button7 = new Button("Sunday");

      // root في الكائن button7 و button6 و button5 و button4 و button3 و button2 و button1 هنا قمنا بإضافة الكائنات
      root.getChildren().addAll(button1, button2, button3, button4, button5, button6, button7);

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

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

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

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

      }

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

      }
    

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

ببطئ قم بتكبير حجم النافذة و تصغيرها بواسطة الفأرة لتفهم أكثر كيف تم ترتيب العناصر.

طريقة وضع محتوى الصفحة في TilePane في JavaFX


 طريقة إضافة مسافة فارغة بين الأشياء التي نضيفها في TilePane

المثال التالي يعلمك طريقة إضافة مسافة فارغة بين الأشياء التي نضيفها في TilePane, بالإضافة إلى عرض محتوى الـ TilePane في الوسط.
لاحظ أنه عند تصغير النافذة بالعرض سيتم إظهار الأشياء على سطر جديد عند الحاجة.


مثال

Main.java
      import javafx.application.Application;
      import javafx.geometry.Insets;
      import javafx.geometry.Pos;
      import javafx.scene.Scene;
      import javafx.stage.Stage;
      import javafx.scene.control.Button;
      import javafx.scene.layout.TilePane;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

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

      // تظهر في وسطه root هنا جعلنا الأشياء التي نضيفها في الكائن
      root.setAlignment(Pos.CENTER);

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

      // root هنا قمنا بإضافة هامش بمقدار 10 بيكسل أفقياً بين كل شيئين يتم إضافتهما في الكائن
      root.setHgap(10);

      // root هنا قمنا بإضافة هامش بمقدار 10 بيكسل عامودياً بين كل شيئين يتم إضافتهما في الكائن
      root.setVgap(10);

      // root هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن
      Button button1 = new Button("Monday");
      Button button2 = new Button("Tuesday");
      Button button3 = new Button("Wednesday");
      Button button4 = new Button("Thursday");
      Button button5 = new Button("Friday");
      Button button6 = new Button("Saturday");
      Button button7 = new Button("Sunday");

      // root في الكائن button7 و button6 و button5 و button4 و button3 و button2 و button1 هنا قمنا بإضافة الكائنات
      root.getChildren().addAll(button1, button2, button3, button4, button5, button6, button7);

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

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

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

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

      }

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

      }
    

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

ببطئ قم بتكبير حجم النافذة و تصغيرها بواسطة الفأرة لتفهم أكثر كيف تم ترتيب العناصر.

طريقة إضافة مسافة فارغة بين الأشياء التي نضيفها في TilePane في JavaFX


 طريقة جعل محتوى الـ TilePane يظهر بشكل عامودي

المثال التالي يعلمك طريقة جعل محتوى الـ TilePane يظهر بشكل عامودي.
لاحظ أنه عند تصغير النافذة بالطول سيتم إظهار الأشياء على عامود جديد عند الحاجة.


مثال

Main.java
      import javafx.application.Application;
      import javafx.geometry.Insets;
      import javafx.geometry.Orientation;
      import javafx.geometry.Pos;
      import javafx.scene.Scene;
      import javafx.stage.Stage;
      import javafx.scene.control.Button;
      import javafx.scene.layout.TilePane;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

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

      // هنا جعلنا الأشياء التي نضيفها تترتب بشكل عامودي
      root.setOrientation(Orientation.VERTICAL);

      // تظهر في وسطه root هنا جعلنا الأشياء التي نضيفها في الكائن
      root.setAlignment(Pos.CENTER);

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

      // root هنا قمنا بإضافة هامش بمقدار 10 بيكسل أفقياً بين كل شيئين يتم إضافتهما في الكائن
      root.setHgap(10);

      // root هنا قمنا بإضافة هامش بمقدار 10 بيكسل عامودياً بين كل شيئين يتم إضافتهما في الكائن
      root.setVgap(10);

      // root هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن
      Button button1 = new Button("Monday");
      Button button2 = new Button("Tuesday");
      Button button3 = new Button("Wednesday");
      Button button4 = new Button("Thursday");
      Button button5 = new Button("Friday");
      Button button6 = new Button("Saturday");
      Button button7 = new Button("Sunday");

      // root في الكائن button7 و button6 و button5 و button4 و button3 و button2 و button1 هنا قمنا بإضافة الكائنات
      root.getChildren().addAll(button1, button2, button3, button4, button5, button6, button7);

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

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

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

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

      }

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

      }
    

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

ببطئ قم بتكبير حجم النافذة و تصغيرها بواسطة الفأرة لتفهم أكثر كيف تم ترتيب العناصر.

طريقة جعل محتوى ال TilePane يظهر بشكل عامودي في JavaFX

كورس شامل  تعلم javaFX