شرح الكلاس AnchorPane
الكلاس AnchorPane
يستخدم لإنشاء حاوية لا تترتب فيها الأشياء بشكل تلقائي, و بالتالي أنت من تتولى تحديد أماكن الأشياء التي تضيفها فيها.
كل شيء تضيفه في هذه الحاوية, يمكن تحديد حجم الفراغ بينه و بين الحاوية ( أي بعده عنها ) من الجهات الأربعة ( الأعلى, الأسفل, اليمين, اليسار ).
إنتبه: يمكنك تحديد حجم الفراغ بين الشيء الذي تضيفه و بين الحاوية نفسها. و ليس حجم الفراغ بين الأشياء التي وضعتها في الحاوية.
أيضاً, حجم الفراغ الذي تضيفه يؤثر على حجم الشيء نفسه, فمثلاً:
بمجرد تحديد حجم المسافة الفارغة بين أي شيء تضيفه و بين الحاوية من الأعلى و الأسفل فإنه سيظهر على كل المسافة المتوفرة بالطول.
و بمجرد تحديد حجم المسافة الفارغة بين أي شيء تضيفه و بين الحاوية من اليمين و اليسار فإنه سيظهر على كل المسافة المتوفرة بالعرض.
لذلك عليك تقدير أحجام المسافات الفارغة التي ستضعها لكل شيء لتحدد أمكان الأشياء التي أضفتها و لجعلها لا تظهر فوق بعضها البعض.
إذاً, فكرة هذه الحاوية هي جعل الأشياء التي نضيفها فيها تظهر على كل المساحة المتوفرة ما عدا المساحات الفارغة التي نقوم بتحديدها لكل شيء على حدا.
معلومة تقنية في الكلاس AnchorPane
إفتراضياً, في حال قمت بإنشاء كائن الـ AnchorPane
و أضفت فيه بعض الأشياء بدون تحديد حجم المسافات الفارغة بينه و بين هذه الأشياء. فإنهم سيظهروا جميعاً فوق بعضهم في الأعلى من جهة اليسار. و طبعاً آخر شيء تضيفه يظهر في الأعلى.
بناء الكلاس AnchorPane
@DefaultProperty(value="children") public class AnchorPane extends Region
كونستركتورات الكلاس AnchorPane
الجدول التالي يحتوي على كونستركتورات الكلاس AnchorPane
.
الكونستركتور مع تعريفه | |
---|---|
AnchorPane()
ينشئ كائن من الكلاس AnchorPane يمثل حاوية فارغة. |
|
AnchorPane(Node... children)
ينشئ كائن من الكلاس AnchorPane يمثل حاوية مع تحديد الأشياء التي نريد وضعها فيها.مكان الباراميتر children نمرر الأشياء التي نريد وضعها فيها مع وضع فاصلة بين كل شيئين. |
دوال الكلاس AnchorPane
الجدول التالي يحتوي على دوال الكلاس AnchorPane
الأكثر إستخداماً.
الدالة مع تعريفها | |
---|---|
public static void setTopAnchor(Node child, Double value)
تستخدم لتحديد كم يبعد الشيء الموضوع في AnchorPane عنه من الأعلى.مكان الباراميتر child نمرر الشيء الذي نريد إبعاده من الجهة العلوية عن كائن الـ AnchorPane .مكان الباراميتر value نمرر رقم نوعه Double يمثل كم سيتم إبعاد الشيء من الأعلى عن كائن الـ AnchorPane الموضوع فيه. |
|
public static void setBottomAnchor(Node child, Double value)
تستخدم لتحديد كم يبعد الشيء الموضوع في AnchorPane عنه من الأسفل.مكان الباراميتر child نمرر الشيء الذي نريد إبعاده من الجهة السفلية عن كائن الـ AnchorPane .مكان الباراميتر value نمرر رقم نوعه Double يمثل كم سيتم إبعاد الشيء من الأسفل عن كائن الـ AnchorPane الموضوع فيه. |
|
public static void setRightAnchor(Node child, Double value)
تستخدم لتحديد كم يبعد الشيء الموضوع في AnchorPane عنه من الجهة اليمنى.مكان الباراميتر child نمرر الشيء الذي نريد تحديد كم يبعد عن يمين كائن الـ AnchorPane .مكان الباراميتر value نمرر رقم نوعه Double يمثل كم سيتم إبعاد الشيء من الجهة اليمنى عن كائن الـ AnchorPane الموضوع فيه. |
|
public static void setLeftAnchor(Node child, Double value)
تستخدم لتحديد كم يبعد الشيء الموضوع في AnchorPane عنه من الجهة اليسرى.مكان الباراميتر child نمرر الشيء الذي نريد تحديد كم يبعد عن يسار كائن الـ AnchorPane .مكان الباراميتر value نمرر رقم نوعه Double يمثل كم سيتم إبعاد الشيء من الجهة اليسرى عن كائن الـ AnchorPane الموضوع فيه. |
|
public void setPrefSize(double prefWidth, double prefHeight)
تستخدم لتحديد حجم كائن الـ AnchorPane الذي قام باستدعائها.
|
|
public final void setTranslateX(double value)
تستخدم لتحديد مكان كائن الـ AnchorPane الذي قام باستدعائها أفقياً.مكان الباراميتر value نضع رقم يمثل كم Pixel سيتم إزاحته من اليسار إلى اليمين. |
|
public final void setTranslateY(double value)
تستخدم لتحديد مكان كائن الـ AnchorPane الذي قام باستدعائها عامودياً.مكان الباراميتر value نضع رقم يمثل كم Pixel سيتم إزاحته من الأعلى إلى الأسفل. |
|
public final void setBackground(Background value)
تستخدم لوضع لون أو صورة كخلفية لكائن الـ AnchorPane الذي قام بإستدعائها.مكان الباراميتر value نضع كائن من الكلاس Background يشير إلى درجة اللون أو الصورة التي سيتم وضعها كخلفية. |
|
public final void setStyle(String value)
تستخدم لتعديل تصميم كائن الـ AnchorPane الذي قام بإستدعائها.مكان الباراميتر value يمكنك تمرير إسم و قيمة أي خاصية تريد تعديلها في كائن الـ AnchorPane بأسلوب لغة CSS لإظهاره بالشكل الذي تريده. |
|
public ObservableList<Node> getChildren()
ترجع كائن نوعه ObservableList يمثل محتوى كائن الـ AnchorPane الذي قام بإستدعائها مما يجعلك قادراً على إضافة كائنات جديدة أو حذف كائنات موجودة فيه. |
أمثلة شاملة في الكلاس AnchorPane
طريقة تحديد طول و مكان ظهور الشيء الذي يتم إضافته في AnchorPane
المثال التالي يعلمك طريقة تحديد طول و مكان ظهور الشيء الذي يتم إضافته في AnchorPane
.
ملاحظة: هنا جعلنا حجم الفراغ بين الـ Button
و الـ AnchorPane
من الأعلى و من الأسفل بمقدار 30 بيكسل.
لهذا السبب يظهر على طول النافذة و لكنه يحافظ على الفراغ الموجود من الأعلى و الأسفل.
مثال طريقة تحديد طول و مكان ظهور الشيء الذي يتم إضافته في AnchorPane
.
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; import javafx.scene.layout.AnchorPane; public class Main extends Application { @Override public void start(Stage stage) { // في النافذة Root Node و الذي ننوي جعله الـ AnchorPane هنا قمنا بإنشاء كائن من الكلاس AnchorPane root = new AnchorPane(); // root الذي نريد إضافته في الكائن Button يمثل الـ Button هنا قمنا بإنشاء كائن من الكلاس Button button = new Button("Button"); // الذي سيوضع بداخله هو 30 بيكسل AnchorPane و كائن الـ button هنا قلنا أن حجم المسافة الفارغة من الأعلى بين الكائن AnchorPane.setTopAnchor(button, 30.0); // الذي سيوضع بداخله هو 30 بيكسل AnchorPane و كائن الـ button هنا قلنا أن حجم المسافة الفارغة من الأسفل بين الكائن AnchorPane.setBottomAnchor(button, 30.0); // root في الكائن button هنا قمنا بإضافة الكائن root.getChildren().add(button); // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن Scene scene = new Scene(root, 350, 250); // هنا وضعنا عنوان للنافذة stage.setTitle("JavaFX AnchorPane"); // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ stage.setScene(scene); // هنا قمنا بإظهار النافذة stage.show(); } // هنا قمنا بتشغيل التطبيق public static void main(String[] args) { launch(args); } }
•ستظهر لك النافذة التالية عند التشغيل.
•ببطئ قم بتصغير حجم النافذة لأقصى حدود ممكنة لتفهم كيف سيتأثر حجم الكائن Button
بحجم الفراغ الموضوع فوقه و تحته.
طريقة تحديد عرض و مكان ظهور الشيء الذي يتم إضافته في AnchorPane
المثال التالي يعلمك طريقة تحديد عرض و مكان ظهور الشيء الذي يتم إضافته في AnchorPane
.
ملاحظة: هنا جعلنا حجم الفراغ بين الـ Button
و الـ AnchorPane
من اليمين و من اليسار بمقدار 30 بيكسل.
لهذا السبب يظهر على عرض النافذة و لكنه يحافظ على الفراغ الموجود من اليمين و اليسار.
مثال طريقة تحديد عرض و مكان ظهور الشيء الذي يتم إضافته في AnchorPane
.
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; import javafx.scene.layout.AnchorPane; public class Main extends Application { @Override public void start(Stage stage) { // في النافذة Root Node و الذي ننوي جعله الـ AnchorPane هنا قمنا بإنشاء كائن من الكلاس AnchorPane root = new AnchorPane(); // root الذي نريد إضافته في الكائن Button يمثل الـ Button هنا قمنا بإنشاء كائن من الكلاس Button button = new Button("Button"); // الذي سيوضع بداخله هو 30 بيكسل AnchorPane و كائن الـ button هنا قلنا أن حجم المسافة الفارغة من اليمين بين الكائن AnchorPane.setRightAnchor(button, 30.0); // الذي سيوضع بداخله هو 30 بيكسل AnchorPane و كائن الـ button هنا قلنا أن حجم المسافة الفارغة من اليسار بين الكائن AnchorPane.setLeftAnchor(button, 30.0); // root في الكائن button هنا قمنا بإضافة الكائن root.getChildren().add(button); // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن Scene scene = new Scene(root, 350, 250); // هنا وضعنا عنوان للنافذة stage.setTitle("JavaFX AnchorPane"); // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ stage.setScene(scene); // هنا قمنا بإظهار النافذة stage.show(); } // هنا قمنا بتشغيل التطبيق public static void main(String[] args) { launch(args); } }
•ستظهر لك النافذة التالية عند التشغيل.
•ببطئ قم بتصغير حجم النافذة لأقصى حدود ممكنة لتفهم كيف سيتأثر حجم الكائن Button
بحجم الفراغ الموضوع يمينه و يساره.
طريقة تحديد حجم و مكان ظهور الشيء الذي يتم إضافته في AnchorPane
المثال التالي يعلمك طريقة تحديد حجم و مكان ظهور الشيء الذي يتم إضافته في AnchorPane
.
ملاحظة: هنا قمنا بتحديد حجم الفراغ بين الـ Button
و الـ AnchorPane
من جميع الجوانب بمقدار 30 بيكسل.
لهذا السبب يظهر على عرض و طول النافذة و لكنه يحافظ على الفراغ الموجود من الأعلى, الأسفل, اليمين و اليسار.
مثال طريقة تحديد حجم و مكان ظهور الشيء الذي يتم إضافته في AnchorPane
.
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; import javafx.scene.layout.AnchorPane; public class Main extends Application { @Override public void start(Stage stage) { // في النافذة Root Node و الذي ننوي جعله الـ AnchorPane هنا قمنا بإنشاء كائن من الكلاس AnchorPane root = new AnchorPane(); // root الذي نريد إضافته في الكائن Button يمثل الـ Button هنا قمنا بإنشاء كائن من الكلاس Button button = new Button("Button"); // الذي سيوضع بداخله هو 30 بيكسل AnchorPane و كائن الـ button هنا قلنا أن حجم المسافة الفارغة من الأعلى بين الكائن AnchorPane.setTopAnchor(button, 30.0); // الذي سيوضع بداخله هو 30 بيكسل AnchorPane و كائن الـ button هنا قلنا أن حجم المسافة الفارغة من الأسفل بين الكائن AnchorPane.setBottomAnchor(button, 30.0); // الذي سيوضع بداخله هو 30 بيكسل AnchorPane و كائن الـ button هنا قلنا أن حجم المسافة الفارغة من اليمين بين الكائن AnchorPane.setRightAnchor(button, 30.0); // الذي سيوضع بداخله هو 30 بيكسل AnchorPane و كائن الـ button هنا قلنا أن حجم المسافة الفارغة من اليسار بين الكائن AnchorPane.setLeftAnchor(button, 30.0); // root في الكائن button هنا قمنا بإضافة الكائن root.getChildren().add(button); // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن Scene scene = new Scene(root, 350, 250); // هنا وضعنا عنوان للنافذة stage.setTitle("JavaFX AnchorPane"); // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ stage.setScene(scene); // هنا قمنا بإظهار النافذة stage.show(); } // هنا قمنا بتشغيل التطبيق public static void main(String[] args) { launch(args); } }
•ستظهر لك النافذة التالية عند التشغيل.
•ببطئ قم بتصغير حجم النافذة لأقصى حدود ممكنة لتفهم كيف سيتأثر حجم الكائن Button
بحجم الفراغ الموضوع حوله.
طريقة وضع أكثر من شيء في AnchorPane
المثال التالي يعلمك طريقة وضع أكثر من شيء في AnchorPane
.
ملاحظة: هنا قمنا بتحديد حجم الفراغ بين كل Button
و بين الـ AnchorPane
من جميع الجوانب بالإضافة إلى تحديد حجمهم المفضل كالتالي:
Button1
يتأثر بعرض الـAnchorPane
فقط.Button2
يتأثر بعرض و طول الـAnchorPane
.Button3
يتأثر بطول الـAnchorPane
فقط.
مثال طريقة وضع أكثر من شيء في AnchorPane
.
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; import javafx.scene.layout.AnchorPane; public class Main extends Application { @Override public void start(Stage stage) { // في النافذة Root Node و الذي ننوي جعله الـ AnchorPane هنا قمنا بإنشاء كائن من الكلاس AnchorPane root = new AnchorPane(); // root هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن Button button1 = new Button("Button 1"); Button button2 = new Button("Button 2"); Button button3 = new Button("Button 3"); // الذي سيوضع بداخله AnchorPane و كائن الـ button هنا قمنا بتحديد حجم الفراغ من الأعلى, اليسار و اليمين بين الكائن AnchorPane.setTopAnchor(button1, 30.0); AnchorPane.setRightAnchor(button1, 30.0); AnchorPane.setLeftAnchor(button1, 30.0); // ثابت و يساوي 30 بيكسل فقط كحد أقصى إذا كان هناك مساحة متوفرة في النافذة button1 هنا جعلنا طول الكائن button1.setPrefHeight(30); // الذي سيوضع بداخله AnchorPane و كائن الـ button هنا قمنا بتحديد حجم الفراغ من الأعلى, اليسار, اليمين و الأسفل بين الكائن AnchorPane.setTopAnchor(button2, 70.0); AnchorPane.setRightAnchor(button2, 130.0); AnchorPane.setLeftAnchor(button2, 30.0); AnchorPane.setBottomAnchor(button2, 30.0); // الذي سيوضع بداخله AnchorPane و كائن الـ button هنا قمنا بتحديد حجم الفراغ من الأعلى, اليمين و الأسفل بين الكائن AnchorPane.setTopAnchor(button3, 70.0); AnchorPane.setRightAnchor(button3, 30.0); AnchorPane.setBottomAnchor(button3, 30.0); // ثابت و يساوي 80 بيكسل فقط كحد أقصى إذا كان هناك مساحة متوفرة في النافذة button3 هنا جعلنا عرض الكائن button3.setPrefWidth(80); // root في الكائن button هنا قمنا بإضافة الكائن root.getChildren().addAll(button1, button2, button3); // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن Scene scene = new Scene(root, 350, 250); // هنا وضعنا عنوان للنافذة stage.setTitle("JavaFX AnchorPane"); // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ stage.setScene(scene); // هنا قمنا بإظهار النافذة stage.show(); } // هنا قمنا بتشغيل التطبيق public static void main(String[] args) { launch(args); } }
•ستظهر لك النافذة التالية عند التشغيل.
•ببطئ قم بتصغير و تكبير حجم النافذة لتفهم كيف ستتغير أحجام الأشياء الموضوعة في الكائن AnchorPane
نسبة لحجمه.