JavaFX 2.0布局窗格– HBox和VBox
生活随笔
收集整理的這篇文章主要介紹了
JavaFX 2.0布局窗格– HBox和VBox
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果要對JavaFX 2.0中所有不同的布局窗格進行概述,或者想了解有關它們的一些基本知識,請參閱我以前的文章《 JavaFX 2.0中的布局窗格》 。 布局窗格HBox和VBox絕對是JavaFX 2.0中最基本的布局容器。 如您所知,它們的用途是將所有子級布置在一個水平行( HBox )或一個垂直列( VBox )中。 因為它們非常容易使用,并且對于較小的布局問題非常有用,所以您可能會經常使用它們。 我將給出兩個有關如何使用它們的示例。 與其他示例一樣,首先是代碼,然后是解釋。
HBox和VBox –示例1
?
您可以看到每個VBox以定義的間距值布置其子按鈕, HBox布置三個VBox且間距為50像素。 因為我們為每個VBox設置了不同的對齊方式,所以您可以看到它們以特定方式將按鈕排列在其邊界內。 注意:我們還為HBox指定了路線,否則三個VBox不會布置在中間! 如果您調整應用程序窗口的大小,則應如下所示:
您可以看到VBoxes不斷增長并填充了其父級提供的空間,并且它們仍根據其設置的對齊方式排列其子級。 HBox和VBox –示例2 下一個示例將顯示如何使用靜態setMargin和setHgrow (分別為setVgrow )方法: import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.stage.Stage;/**** Created on: 20.03.2012* @author Sebastian Damm*/ public class HBoxandVBoxExample2 extends Application {@Overridepublic void start(Stage primaryStage) throws Exception{ StackPane root = new StackPane();HBox hbox = new HBox(30); // create a HBox to hold 2 vboxes // create a vbox with a textarea that grows verticallyVBox vbox = new VBox(10); Label lbName = new Label("I′m a label!");TextField textField = new TextField();TextArea textArea = new TextArea();textArea.setPrefWidth(100);VBox.setVgrow(textArea, Priority.ALWAYS); vbox.getChildren().addAll(lbName, textField, textArea);// create a vbox that grows horizontally inside the hboxVBox vbox2 = new VBox(10); Label lbName2 = new Label("I′m also a label!");TextField tf2 = new TextField();tf2.setPromptText("type here");TextArea textArea2 = new TextArea();textArea2.setPrefWidth(100);vbox2.getChildren().addAll(lbName2, tf2, textArea2);HBox.setHgrow(vbox2, Priority.ALWAYS);// the next two lines behave equally - try to comment the first line out and use the 2nd linehbox.setPadding(new Insets(20)); // StackPane.setMargin(hbox, new Insets(20));hbox.getChildren().addAll(vbox, vbox2);root.getChildren().add(hbox);Scene scene = new Scene(root, 500, 300); // the stack pane is the root nodeprimaryStage.setTitle("HBox and VBox Example 2");primaryStage.setScene(scene);primaryStage.show(); }public static void main(String[] args){Application.launch(args);} } 在此示例中,我們創建了兩個VBox,它們是HBox的子級。 VBox內有一個標簽,一個文本字段和一個文本區域。 第一行是VBox.setVgrow(textArea, Priority.ALWAYS) 。 我們定義的這行代碼是,如果TextArea對象包含在VBox則它應始終垂直增長(否則,將不會有任何效果)。 接下來,將重點放在HBox.setHgrow(vbox2, Priority.ALWAYS) 。 在這里,我們告訴第二個VBox在HBox內水平生長。 最后使用hbox.setPadding(new Insets(20)); 或StackPane.setMargin(hbox, new Insets(20))我們給整個HBox填充一些內容。 這兩行在這里表現相同,因為一方面我們為窗格本身指定了一個填充,窗格應該在其邊界內使用填充來布置其子級,而另一方面,我們告訴父級使用給定的布局對窗格進行布局它周圍的邊緣。 注意:邊距是外部距離/間隙,填充內部距離/間隙。
這是一張為您展示“ CSS Box Model”的圖片,它演示了內容,填充,邊框和元素邊距之間的關系。
資料來源:w3Schools.com
因為setPadding方法是在Region類中定義的,所以每個布局窗格都可以使用此方法。 Insets類通常用于這些目的,并提供了兩種不同的構造函數:一種采用一個double值并為每側定義相同的填充,而一個構造函數采用4個double值并從上至左順時針定義填充。 提示:如果將邊框應用于HBox并在兩行之間切換以設置填充/邊距,您會更清楚地看到差異。 您的應用程序應如下所示:
注意HBox周圍的10px填充。 如果現在調整窗口大小,則其外觀應類似于以下內容: 如您所見,左側的VBox的TextArea垂直增長,而整個右側的VBox在HBox水平增長。
參考: JavaFX 2.0布局窗格–來自我們JCG合作伙伴 Sebastian Damm的HBox和VBox在Java博客上的Just my 2 cents 。
翻譯自: https://www.javacodegeeks.com/2012/07/javafx-20-layout-panes-hbox-and-vbox.html
總結
以上是生活随笔為你收集整理的JavaFX 2.0布局窗格– HBox和VBox的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想在门口安装摄像头如何安装电脑摄像头
- 下一篇: Java中的生成器设计模式