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