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 سيظهر على كل المساحة المتبقية.

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة