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

شرح  الكلاس TextArea

الكلاس TextArea يستخدم لإضافة مربع نص كبير يتألف من أكثر من سطر ( Text Area ) في واجهة المستخدم.


بناء الكلاس TextArea

public class TextArea
extends TextInputControl
	

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

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

الكونستركتور مع تعريفه
public TextArea() ينشئ كائن من الكلاس TextArea يمثل مربع نص فارغ.
public TextArea(String text) ينشئ كائن من الكلاس TextArea يمثل مربع نص فيه نص.
مكان الباراميتر text نمرر النص الذي نريد وضعه بداخل الـ TextArea.

دوال الكلاس TextArea

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

الدالة مع تعريفها
public String getText() ترجع نص كائن الـ TextArea الذي قام بإستدعائها كنص.
public void setText(String text) تستخدم لتبديل نص كائن الـ TextArea الذي قام بإستدعائها.
مكان الباراميتر text نضع النص الجديد.
public final void setFont(Font newFont) تستخدم لتحديد حجم و نوع خط كائن الـ TextArea الذي قام بإستدعائها.
مكان الباراميتر newFont نضع كائن من الكلاس Font يمثل خصائص الخط الجديد.
public final void setPadding(Insets value) تستخدم لإضافة هامش ( مسافة فارغة ) حول نص كائن الـ TextArea الذي قام باستدعائها.
مكان الباراميتر value نضع كائن من الكلاس Insets يمثل حجم الهامش حول النص من كل الجهات.
public final void setTranslateX(double value) تستخدم لتحديد مكان الـ TextArea الذي قام باستدعائها أفقياً.
مكان الباراميتر value نضع رقم يمثل كم Pixel سيتم إزاحته من اليسار إلى اليمين.
public final void setTranslateY(double value) تستخدم لتحديد مكان الـ TextArea الذي قام باستدعائها عامودياً.
مكان الباراميتر value نضع رقم يمثل كم Pixel سيتم إزاحته من الأعلى إلى الأسفل.
public void setPrefSize(double prefWidth, double prefHeight) تستخدم لتحديد حجم الـ TextArea الذي قام باستدعائها.

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

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

public final void setDisable(boolean value) تستخدم لجعل نص كائن الـ TextArea الذي قام باستدعائها يبدو غير مفعّل, أي يصبح لونه باهتاً و غير قابل لتغير النص الموجود بداخله.
مكان الباراميتر value نضع القيمة true لجعله غير مفعّل.
public final void setStyle(String value) تستخدم لتعديل تصميم الـ TextArea الذي قام بإستدعائها.
مكان الباراميتر value يمكنك تمرير إسم و قيمة أي خاصية تريد تعديلها في كائن الـ TextArea بأسلوب لغة CSS لإظهاره بالشكل الذي تريده.

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

طريقة إضافة TextArea في javafx

 المثال التالي يعلمك طريقة إضافة TextArea في javafx .

مثال

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

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // يمثل مربع النص الذي نريد إضافته في النافذة TextArea هنا قمنا بإنشاء كائن من الكلاس
      TextArea textArea = new TextArea();

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

      // عرضه 200 بيكسل و طوله 100 بيكسل textArea هنا قمنا بتحديد حجم الـ
      textArea.setPrefSize(200, 100);

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

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

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

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

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

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

      }

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

      }
    

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

طريقة إضافة TextArea في javafx




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

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

مثال

Main.java
      import javafx.application.Application;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.TextArea;
      import javafx.scene.text.Font;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // يمثل مربع النص الذي نريد إضافته في النافذة TextArea هنا قمنا بإنشاء كائن من الكلاس
      TextArea textArea = new TextArea();

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

      // عرضه 200 بيكسل و طوله 100 بيكسل textArea هنا قمنا بتحديد حجم الـ
      textArea.setPrefSize(200, 100);

      // textArea هنا قمنا بتغيير نوع و حجم خط الكائن
      textArea.setFont(new Font("Arial", 20));

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

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

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

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

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

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

      }

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

      }
    

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

طريقة تغيير حجم خط الكائن TextArea في javafx




 طريقة جعل النص بداخل الـ TextArea ينزل على سطر جديد بشكل تلقائي 

المثال التالي يعلمك طريقة جعل النص بداخل الـ TextArea ينزل على سطر جديد بشكل تلقائي على سطر جديد بدل إظهار ScrollBar بالعرض.

مثال

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

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // يمثل مربع النص الذي نريد إضافته في النافذة TextArea هنا قمنا بإنشاء كائن من الكلاس
      TextArea textArea = new TextArea();

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

      // عرضه 200 بيكسل و طوله 100 بيكسل textArea هنا قمنا بتحديد حجم الـ
      textArea.setPrefSize(200, 100);

      // بالعرض Scroll Bar ينزل على سطر جديد عند الحاجة بدل إظهار TextArea هنا جعلنا النس بداخل الـ
      textArea.setWrapText(true);

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

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

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

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

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

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

      }

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

      }
    

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

طريقة جعل النص بداخل الـ TextArea ينزل على سطر جديد بشكل تلقائي في javafx




 طريقة الحصول على النص المدخل في الـ TextArea

المثال التالي يعلمك طريقة الحصول على النص المدخل في الـ TextArea.

مثال

Main.java
      import javafx.application.Application;
      import javafx.event.ActionEvent;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Button;
      import javafx.scene.control.Label;
      import javafx.scene.control.TextArea;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
      Label nameLabel = new Label("Enter your address");
      TextArea textArea = new TextArea();
      Button button = new Button("Get address");
      Label resultLabel = new Label();

      // هنا قمنا بتحديد مكان ظهور الأشياء التي سنضيفها في النافذة
      nameLabel.setTranslateX(50);
      nameLabel.setTranslateY(73);
      textArea.setTranslateX(170);
      textArea.setTranslateY(70);
      button.setTranslateX(50);
      button.setTranslateY(157);
      resultLabel.setTranslateX(170);
      resultLabel.setTranslateY(160);

      // resultLabel و الـ button و الـ textArea هنا قمنا بتحديد حجم الـ
      textArea.setPrefSize(170, 60);
      button.setPrefSize(100, 25);
      resultLabel.setPrefWidth(170);

      // يظهر على سطر جديد بشكل تلقائي عند الحاجة resultLabel و الـ TextArea هنا جعلنا محتوى الـ
      resultLabel.setWrapText(true);
      textArea.setWrapText(true);

      // كلما كان فارغاّ textArea هنا قمنا بتحديد نص الإرشاد الذي سيظهر بداخل الـ
      textArea.setPromptText("Street, and Apt. No.\n city, State, and ZIP+4");
      textArea.setFocusTraversable(false);

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

      // root هنا قمنا بإضافة جميع الأشياء في الكائن
      root.getChildren().add(nameLabel);
      root.getChildren().add(textArea);
      root.getChildren().add(button);
      root.getChildren().add(resultLabel);

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

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

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

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

      // button هنا قمنا بتحديد ماذا سيحدث عند النقر على الكائن
      button.setOnAction((ActionEvent e) -> {
      // resultLabel و وضعه كنص للـ textArea عند النقر على الزر سيتم جلب نص الـ
      resultLabel.setText(textArea.getText());
      });

      }

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

      }
    

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

طريقة الحصول على النص المدخل في الـ TextArea




 طريقة الحصول على عدد الأسطر و الأحرف الموجودة في TextArea

المثال التالي يعلمك طريقة الحصول على عدد الأسطر و الأحرف الموجودة في TextArea.

المثال عبارة واجهة مستخدم فيها TextArea و إثنين Label.
كلما تم إدخال أو حذف حرف في الـ TextArea سيتم إظهار عدد الأسطر الحالية في Label و عدد الأحرف الحالية في Label آخر.

مثال

Main.java
      import javafx.application.Application;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Label;
      import javafx.scene.control.TextArea;
      import javafx.scene.input.KeyEvent;
      import javafx.stage.Stage;

      public class Main extends Application {

      @Override
      public void start(Stage stage) {

      // هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
      TextArea textArea = new TextArea();
      Label rowsLabel = new Label("Rows: 0");
      Label charsLabel = new Label("Characters: 0");

      // هنا قمنا بتحديد مكان ظهور الأشياء التي سنضيفها في النافذة
      textArea.setTranslateX(20);
      textArea.setTranslateY(25);
      rowsLabel.setTranslateX(300);
      rowsLabel.setTranslateY(25);
      charsLabel.setTranslateX(300);
      charsLabel.setTranslateY(50);

      // textArea هنا قمنا بتحديد حجم الـ
      textArea.setPrefSize(260, 200);

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

      // root هنا قمنا بإضافة جميع الأشياء في الكائن
      root.getChildren().add(textArea);
      root.getChildren().add(rowsLabel);
      root.getChildren().add(charsLabel);

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

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

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

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

      // textArea هنا قمنا بتحديد ماذا سيحدث عند إضافة أو حذف أي حرف في الـ
      textArea.setOnKeyReleased((KeyEvent e) -> {
      // charsLabel كنص للكائن textArea هنا وضعنا عدد أحرف الـ
      charsLabel.setText("Characters: " + textArea.getText().length());
      // rowsLabel فارغ سيتم إعتبار عدد الأسطر الموجودة فيه يساوي 0 و سيتم وضع ذلك كنص للكائن textArea إذا كان الـ
      if (textArea.getText().equals("")) {
      rowsLabel.setText("Rows: 0");
      }
      // rowsLabel فارغاً, سيتم جلب عدد الأسطر الموجودة فيه و وضعها كنص للكائن textArea إذا لم يكن الـ
      else {
      rowsLabel.setText("Rows: " + textArea.getText().split("\n").length);
      }
      });

      }

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

      }
    

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

طريقة الحصول على عدد الأسطر و الأحرف الموجودة في TextArea