为应用程序创建所有必需的节点后,您可以使用布局对其进行排列。布局是计算对象在给定空间中的位置的过程。JavaFX在javafx.scene.layout包中提供了各种布局。
在此布局中,节点从窗格的边缘附加/锚定到一个点(偏移)。
您可以通过实例化javafx.scene.layout.AnchorPane类来创建锚定窗格。有四个锚点约束可指定从窗格的边缘到其节点的边缘的距离-topAnchor,leftAnchor,bottomAnchor,rightAnchor。
您可以使用setPrefSize()方法设置锚定窗格的大小。要将节点添加到此窗格中,可以将它们作为构造函数的参数传递,也可以将它们添加到窗格的可观察列表中,如下所示:
getChildren().addAll();
import javafx.application.Application; import javafx.collections.ObservableList; import javafx.geometry.HPos; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.control.Separator; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.FontPosture; import javafx.scene.text.FontWeight; import javafx.stage.Stage; public class AnchorPaneExample extends Application { public void start(Stage stage) { //创建复选框 CheckBox checkBox1 = new CheckBox("Hindi"); CheckBox checkBox2 = new CheckBox("Gujarathi"); CheckBox checkBox3 = new CheckBox("Punjabi"); CheckBox checkBox4 = new CheckBox("Telugu"); CheckBox checkBox5 = new CheckBox("Tamil"); CheckBox checkBox6= new CheckBox("Malayalam"); //创建标签 Label label = new Label("选择已知的语言:"); Font font = Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 12); label.setFont(font); //创建一个分隔符 Separator sep = new Separator(); sep.setMaxWidth(80); sep.setHalignment(HPos.CENTER); //将复选框和分隔符添加到窗格中 VBox vBox = new VBox(5); vBox.setPadding(new Insets(5, 5, 5, 210)); vBox.getChildren().addAll(label, checkBox1, checkBox2, checkBox3, checkBox4, checkBox5, checkBox6); //在第三个复选框后添加分隔符 vBox.getChildren().add(4, sep); //创建按钮 Button next = new Button("Next"); Button previous = new Button("previous"); //创建锚定窗格 AnchorPane anchorPane = new AnchorPane(); //将锚点设置为下一个和上一个按钮 AnchorPane.setRightAnchor(next, 5.0); AnchorPane.setLeftAnchor(previous, 5.0); //检索锚定窗格的可观察列表 ObservableList list = anchorPane.getChildren(); //将vBox和按钮添加到定位窗格 list.addAll(vBox, next, previous); //设置舞台 Scene scene = new Scene(anchorPane, 595, 200, Color.BEIGE); stage.setTitle("Anchor Pane Example"); stage.setScene(scene); stage.show(); } public static void main(String args[]){ launch(args); } }
输出结果