JavaFXطريقة إظهار محتوى الـHBox
على كل المساحة المتوفرة
المثال التالي يعلمك طريقة جعل محتوى الـ HBox
يظهر على كل المساحة المتوفرة.
المثال الأول
import javafx.application.Application; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.geometry.Pos; import javafx.scene.control.Button; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; public class Main extends Application { public void start(Stage stage) { // في النافذة Root Node و الذي ننوي جعله الـ HBox هنا قمنا بإنشاء كائن من الكلاس HBox root = new HBox(); // root هنا قمنا بإضافة مسافة فارغة بمقدار 10 بيكسل بين أي شيئين يتم إضافتهما في الكائن root.setSpacing(10); // يظهر في وسطه root هنا قمنا بجعل محتوى الكائن root.setAlignment(Pos.CENTER); // root هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن Button button1 = new Button("Button 1"); Button button2 = new Button("Button 2"); // root و الذي سيتغير بشكل تلقائي في حال تغيير حجم الكائن root اللذين سنضيفهما في الكائن button2 و button1 هنا قمنا بتحديد الحجم الأقصى المفضل للكائنين button1.setMaxWidth(Double.MAX_VALUE); button2.setMaxWidth(Double.MAX_VALUE); // الذي سيتم وضعهما بداخله HBox يكبران لأقصى حدود ممكنة نسبة لحجم كائن الـ button2 و button1 هنا جعلنا عرض الكائنين HBox.setHgrow(button1, Priority.ALWAYS); HBox.setHgrow(button2, Priority.ALWAYS); // root في الكائن button2 و button1 هنا قمنا بإضافة الكائنات root.getChildren().add(button1); root.getChildren().add(button2); // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن Scene scene = new Scene(root, 300, 150); // هنا وضعنا عنوان للنافذة stage.setTitle("JavaFX HBox"); // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ stage.setScene(scene); // هنا قمنا بإظهار النافذة stage.show(); } // هنا قمنا بتشغيل التطبيق public static void main(String[] args) { launch(args); } }
ستظهر لك النافذة التالية عند التشغيل.
ببطئ قم بتكبير حجم النافذة و تصغيرها بواسطة الفأرة لتفهم أكثر كيف تم ترتيب العناصر و كيف أنهم ظهروا في كامل عرض الـ HBox
.
هنا قمنا بإعادة المثال الأول مع تعديل السطر رقم 32 فقط.
المثال الثاني
import javafx.application.Application; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.geometry.Pos; import javafx.scene.control.Button; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; public class Main extends Application { public void start(Stage stage) { // في النافذة Root Node و الذي ننوي جعله الـ HBox هنا قمنا بإنشاء كائن من الكلاس HBox root = new HBox(); // root هنا قمنا بإضافة مسافة فارغة بمقدار 10 بيكسل بين أي شيئين يتم إضافتهما في الكائن root.setSpacing(10); // يظهر في وسطه root هنا قمنا بجعل محتوى الكائن root.setAlignment(Pos.CENTER); // root هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في الكائن Button button1 = new Button("Button 1"); Button button2 = new Button("Button 2"); // root و الذي سيتغير بشكل تلقائي في حال تغيير حجم الكائن root اللذين سنضيفهما في الكائن button2 و button1 هنا قمنا بتحديد الحجم الأقصى المفضل للكائنين button1.setMaxWidth(Double.MAX_VALUE); // ملاحظة: هذا السطر لم يعد له فائدة و يمكن إلغاؤه button2.setMaxWidth(Double.MAX_VALUE); // الذي سيتم وضعه بداخله HBox ثابت و لا يتأثر أبداً بحجم كائن الـ button1 هنا جعلنا عرض الكائن HBox.setHgrow(button1, Priority.NEVER); // الذي سيتم وضعه بداخله HBox يكبر لأقصى حدود ممكنة نسبة لحجم كائن الـ button2 هنا جعلنا عرض الكائن HBox.setHgrow(button2, Priority.ALWAYS); // root و الذي بدوره سيضيفهم أيضاً في الكائن في الكائن button2 و button1 هنا قمنا بإضافة الكائنات root.getChildren().add(button1); root.getChildren().add(button2); // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن Scene scene = new Scene(root, 300, 150); // هنا وضعنا عنوان للنافذة stage.setTitle("JavaFX HBox"); // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ stage.setScene(scene); // هنا قمنا بإظهار النافذة stage.show(); } // هنا قمنا بتشغيل التطبيق public static void main(String[] args) { launch(args); } }
ستظهر لك النافذة التالية عند التشغيل.
ببطئ قم بتكبير حجم النافذة و تصغيرها بواسطة الفأرة لتفهم أكثر كيف تم ترتيب العناصر و كيف أن الكائن button1
سيحتل فقط المساحة التي يحتاجها مهما كان حجم كائن الـ HBox
. بينما الكائن button2
سيظهر على كل المساحة المتبقية.