JavaFXطريقة إظهار محتوى الـHBox على كل المساحة المتوفرة

المثال التالي يعلمك طريقة جعل محتوى الـ HBox يظهر على كل المساحة المتوفرة.


المثال الأول

Main.java
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 {

    @Override
    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 يظهر على كل المساحة المتوفرة فيه في JavaFX

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



هنا قمنا بإعادة المثال الأول مع تعديل السطر رقم 32 فقط.

المثال الثاني

Main.java
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 {

    @Override
    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);
    }

}

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

طريقة تحديد مساحة كل عنصر في ال HBox في JavaFX

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