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

شرح الكلاس  Separator

الكلاس Separator يستخدم لإضافة خط فاصل ( Separator ) بين الأشياء التي نضيفها في واجهة المستخدم.
هذا الخط يمكن إظهاره بشكل أفقي أو عامودي, و يمكن تعديل تصميمه و خصائص ظهوره بالشكل الذي تريده.

إفتراضياً, عند إضافة Separator في واجهة المستخدم فإنه يظهر بشكل أفقي و لونه رمادي.


بناء الكلاس Separator

public class Separator
extends Control
	

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

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

الكونستركتور مع تعريفه
public Separator() ينشئ كائن من الكلاس Separator يمثل خط أفقي.
public Separator(Orientation orientation) ينشئ كائن من الكلاس Separator يمثل خط مع تحديد ما إذا كان أفقي أو عامودي.
مكان الباراميتر orientation نضع إحدى الثوابت الموجودة في الكلاس Orientation و التي تحدد طريقة ظهوره.

الثوابت التي يسمح باستخدامها هي:
  • Orientation.VERTICAL يجعل الـ Separator يظهر عامودياً.

  • Orientation.HORIZONTAL يجعل الـ Separator يظهر أفقياً.


إفتراضياً, الـ Separator يستخدم الثابت Orientation.HORIZONTAL.

دوال الكلاس Separator

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

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

الثوابت التي يسمح باستخدامها هي:
  • Orientation.VERTICAL يجعل الـ Separator يظهر عامودياً.

  • Orientation.HORIZONTAL يجعل الـ Separator يظهر أفقياً.

public final void setRotate(double degree) تستخدم لإدارة نص كائن الـ Separator الذي قام بإستدعائها.
مكان الباراميتر degree نضع رقم يمثل درجة الدوران.
public final void setTranslateX(double value) تستخدم لتحديد مكان كائن الـ Separator الذي قام باستدعائها أفقياً.
مكان الباراميتر value نضع رقم يمثل كم Pixel سيتم إزاحته من اليسار إلى اليمين.
public final void setTranslateY(double value) تستخدم لتحديد مكان كائن الـ Separator الذي قام باستدعائها عامودياً.
مكان الباراميتر value نضع رقم يمثل كم Pixel سيتم إزاحته من الأعلى إلى الأسفل.
public void setPrefHeight(double prefHeight) تستخدم لتحديد طول كائن الـ Separator الذي قام باستدعائها.
مكان الباراميتر prefHeight نضع رقم يمثل طول الـ Separator بالـ Pixel.
public void setPrefWidth(double prefWidth) تستخدم لتحديد عرض كائن الـ Separator الذي قام باستدعائها.
مكان الباراميتر prefWidth نضع رقم يمثل عرض الـ Separator بالـ Pixel.
public void setPrefSize(double prefWidth, double prefHeight) تستخدم لتحديد حجم كائن الـ Separator الذي قام باستدعائها.

  • مكان الباراميتر prefWidth نضع رقم يمثل عرض الـ Separator بالـ Pixel.

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

public final void setScaleX(double value) تستخدم لتمطيط حجم كائن الـ Separator الذي قام باستدعائها بشكل أفقي.
مكان الباراميتر value نضع رقم يمثل كم مرة سيتم مضاعفة حجمه أفقياً.
public final void setScaleY(double value) تستخدم لتمطيط حجم كائن الـ Separator الذي قام باستدعائها بشكل عامودي.
مكان الباراميتر value نضع رقم يمثل كم مرة سيتم مضاعفة حجمه عامودياً.
public final void setStyle(String value) تستخدم لتعديل تصميم كائن الـ Separator الذي قام بإستدعائها.
مكان الباراميتر value يمكنك تمرير إسم و قيمة أي خاصية تريد تعديلها في كائن الـ Separator بأسلوب لغة CSS لإظهاره بالشكل الذي تريده.

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


 طريقة إنشاء كائن من الكلاس Separator

المثال التالي يعلمك طريقة إنشاء كائن من الكلاس Separator يظهر بشكل أفقي و إضافته في النافذة.

مثال

Main.java
      import javafx.application.Application;
      import javafx.collections.ObservableList;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Separator;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // يمثل الخط الأفقي الذي نريد إضافته في النافذة Seperator هنا قمنا بإنشاء كائن من الكلاس
      Separator separator = new Separator();

      // في النافذة seperator هنا قمنا بتحديد مكان ظهور الكائن
      separator.setTranslateX(100);
      separator.setTranslateY(124);

      // هنا قمنا بتحديد عرض الخط
      separator.setPrefWidth(200);

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

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

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

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

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

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

      }

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

      }
    

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

طريقة إنشاء كائن من الكلاس Separator


 طريقة إنشاء Separator عامودي و إضافته في النافذة

المثال التالي يعلمك طريقة إنشاء Separator عامودي و إضافته في النافذة.

مثال

Main.java
      import javafx.application.Application;
      import javafx.geometry.Orientation;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Separator;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // يمثل الخط العامودي الذي نريد إضافته في النافذة Seperator هنا قمنا بإنشاء كائن من الكلاس
      Separator separator = new Separator(Orientation.VERTICAL);

      // في النافذة seperator هنا قمنا بتحديد مكان ظهور الكائن
      separator.setTranslateX(200);
      separator.setTranslateY(50);

      // هنا قمنا بتحديد طول الخط
      separator.setPrefHeight(150);

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

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

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

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

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

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

      }

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

      }
    

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


 طريقة تغيير نوع و حجم و لون خط الـ Separator

المثال التالي يعلمك طريقة تغيير نوع و حجم و لون خط الـ Separator.

مثال

my-style.css
      /* بشكل إفتراضي لنجعل لونه أزرق و سمكه يساوي 1 بيكسل Separator الذي يستخدمه الكلاس line هنا قمنا بتعديل كلاس التصميم
      يضاف فيها ليصبح لونه أزرق و سمكه يساوي 1 بيكسل Separator يتم ربطها بهذا الملف سيتم تعديل خصائص كل Scene إذاً أي
      */
      .separator .line {
      -fx-border-color: cadetblue;
      -fx-border-width: 2;    
      }
    

Main.java
      import javafx.application.Application;
      import javafx.geometry.Orientation;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Separator;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // يمثل الخط العامودي الذي نريد إضافته في النافذة Seperator هنا قمنا بإنشاء كائن من الكلاس
      Separator separator_1 = new Separator(Orientation.VERTICAL);

      // يمثل الخط العامودي الذي نريد إضافته في النافذة Seperator هنا قمنا بإنشاء كائن من الكلاس
      Separator separator_2 = new Separator(Orientation.HORIZONTAL);

      // في النافذة seperator_1 هنا قمنا بتحديد مكان ظهور الكائن
      separator_1.setTranslateX(50);
      separator_1.setTranslateY(50);

      // في النافذة seperator هنا قمنا بتحديد مكان ظهور الكائن
      separator_2.setTranslateX(100);
      separator_2.setTranslateY(125);

      // separator_1 هنا قمنا بتحديد طول الخط
      separator_1.setPrefHeight(150);

      // separator_2 هنا عرض بتحديد طول الخط
      separator_2.setPrefWidth(200);

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

      // group و الذي بدوره سيضيفهما أيضاً في الكائن list في الكائن separator_2 و seperator_1 هنا قمنا بإضافة الكائنين
      root.getChildren().add(separator_1);
      root.getChildren().add(separator_2);

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

      // لتطبيق الخصائص التي يحتويها على الأشياء الموجودة فيه scene بالكائن my-style.css هنا قمنا بربط ملف التصميم
      scene.getStylesheets().add("css/my-style.css");

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

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

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

      }

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

      }
    

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


 كيف يمكن الإستفادة من الكلاس Separator لتحسين التصميم

المثال التالي يعلمك كيف يمكن الإستفادة من الكلاس Separator لتحسين التصميم.

مثال

my-style.css
      /* بشكل إفتراضي لنجعل لونه أزرق و سمكه يساوي 1 بيكسل Separator الذي يستخدمه الكلاس line هنا قمنا بتعديل كلاس التصميم
      يضاف فيها ليصبح لونه أزرق و سمكه يساوي 1 بيكسل Separator يتم ربطها بهذا الملف سيتم تعديل خصائص كل Scene إذاً أي
      */
      .separator .line {
      -fx-border-color: cadetblue;
      -fx-border-width: 1;    
      }
    

Main.java
      import javafx.application.Application;
      import javafx.geometry.Orientation;
      import javafx.geometry.Pos;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Label;
      import javafx.scene.control.Separator;
      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 هنا قمنا بإنشاء 3 كائنات من الكلاس
      Image image_1 = new Image(getClass().getResourceAsStream("/images/status-weather-clear.png"));
      Image image_2 = new Image(getClass().getResourceAsStream("/images/status-weather-clouds.png"));
      Image image_3 = new Image(getClass().getResourceAsStream("/images/status-weather-showers-day.png"));

      // هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
      Label label_title = new Label("Weather Forecast");
      Label label_mon = new Label("Monday");
      Label label_tue = new Label("Tuesday");
      Label label_wed = new Label("Wednesday");
      Label label_mon_temp = new Label("34", new ImageView(image_1));
      Label label_tue_temp = new Label("28", new ImageView(image_2));
      Label label_wed_temp = new Label("22", new ImageView(image_3));
      Separator horizontal_separator = new Separator(Orientation.HORIZONTAL);
      Separator vertical_separator_1 = new Separator(Orientation.VERTICAL);
      Separator vertical_separator_2 = new Separator(Orientation.VERTICAL);

      // هنا قمنا بتحديد مكان ظهور الأشياء التي سنضيفها في النافذة
      label_title.setTranslateX(50);
      label_title.setTranslateY(45);
      label_mon.setTranslateX(50);
      label_mon.setTranslateY(85);
      label_tue.setTranslateX(150);
      label_tue.setTranslateY(85);
      label_wed.setTranslateX(250);
      label_wed.setTranslateY(85);
      label_mon_temp.setTranslateX(50);
      label_mon_temp.setTranslateY(110);
      label_tue_temp.setTranslateX(150);
      label_tue_temp.setTranslateY(110);
      label_wed_temp.setTranslateX(250);
      label_wed_temp.setTranslateY(110);
      horizontal_separator.setTranslateX(50);
      horizontal_separator.setTranslateY(80);
      vertical_separator_1.setTranslateX(150);
      vertical_separator_1.setTranslateY(80);
      vertical_separator_2.setTranslateX(250);
      vertical_separator_2.setTranslateY(80);

      // هنا قمنا بتحديد حجم الأشياء التي سنضيفها في النافذة
      label_title.setPrefSize(300, 30);
      label_mon.setPrefSize(100, 30);
      label_tue.setPrefSize(100, 30);
      label_wed.setPrefSize(100, 30);
      label_mon_temp.setPrefSize(100, 30);
      label_tue_temp.setPrefSize(100, 30);
      label_wed_temp.setPrefSize(100, 30);
      horizontal_separator.setPrefWidth(300);
      vertical_separator_1.setPrefHeight(100);
      vertical_separator_2.setPrefHeight(100);

      // هنا قمنا بمضاعفة حجم خط جميع الأشياء التي سنضيفها في النافذة
      label_title.setStyle("-fx-font-weight: bold;");
      label_mon.setStyle("-fx-font-weight: bold;");
      label_tue.setStyle("-fx-font-weight: bold;");
      label_wed.setStyle("-fx-font-weight: bold;");
      label_mon_temp.setStyle("-fx-font-weight: bold;");
      label_tue_temp.setStyle("-fx-font-weight: bold;");
      label_wed_temp.setStyle("-fx-font-weight: bold;");

      // هنا جعلنا كل النصوص التي سنضيفها في النافذة تظهر في وسط المساحة التي خصصناها لها حتى لا تظهر ملاصقة للخطوط
      label_title.setAlignment(Pos.CENTER);
      label_mon.setAlignment(Pos.CENTER);
      label_tue.setAlignment(Pos.CENTER);
      label_wed.setAlignment(Pos.CENTER);
      label_mon_temp.setAlignment(Pos.CENTER);
      label_tue_temp.setAlignment(Pos.CENTER);
      label_wed_temp.setAlignment(Pos.CENTER);

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

      // root هنا قمنا بإضافة جميع الأشياء في الكائن
      root.getChildren().add(horizontal_separator);
      root.getChildren().add(vertical_separator_1);
      root.getChildren().add(vertical_separator_2);
      root.getChildren().add(label_title);
      root.getChildren().add(label_mon);
      root.getChildren().add(label_tue);
      root.getChildren().add(label_wed);
      root.getChildren().add(label_mon_temp);
      root.getChildren().add(label_tue_temp);
      root.getChildren().add(label_wed_temp);

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

      // لتطبيق الخصائص التي يحتويها على الأشياء الموجودة فيه scene بالكائن my-style.css هنا قمنا بربط ملف التصميم
      scene.getStylesheets().add("css/my-style.css");

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

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

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

      }

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

      }
    

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

تحسين تصميم واجهة المستخدم باستخدام الكلاس Separator في javafx

 تعلم javaFX