小提示:SceneBuilder有Gluon版和Oracle版,这里使用的是Gluon版
-
效果图
为什么蓝框随窗口拉伸而拉伸,因为窗口拉伸时只有BorderPane的center部分会宽度和高度都进行改变。
先看看效果图,确定是不是自己想找的文章,嘻嘻! -
首先使用SceneBuilder布局,这里用到了多种布局
拖拽完控件后的样子
参考文档:JavaFX布局,很赞!
https://blog.csdn.net/theonegis/article/details/50184811 -
使用SceneBuilder对控件进行属性设置
3.1 Label 的四个设置
BorderPane左侧VBox的两个按钮设置略
参考文档:HBox VBox 布局利用Priority实现布局自适应
https://blog.csdn.net/cdc_csdn/article/details/807100013.2 GridPane的设置
3.3 设置窗口拉伸的最小值
-
fxml的完整代码
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.VBox?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.271" xmlns:fx="http://javafx.com/fxml/1">
<top>
<HBox prefHeight="100.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<children>
<Label alignment="CENTER" maxHeight="Infinity" maxWidth="Infinity" style="-fx-background-color: red;" text="Label" HBox.hgrow="ALWAYS" />
</children>
</HBox>
</top>
<left>
<VBox prefHeight="200.0" prefWidth="100.0" BorderPane.alignment="CENTER">
<children>
<Button maxHeight="Infinity" maxWidth="Infinity" mnemonicParsing="false" text="Button" VBox.vgrow="ALWAYS" />
<Button maxHeight="Infinity" maxWidth="Infinity" mnemonicParsing="false" text="Button" VBox.vgrow="ALWAYS" />
</children>
</VBox>
</left>
<center>
<GridPane style="-fx-border-color: blue; -fx-border-width: 5;" BorderPane.alignment="CENTER">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Button mnemonicParsing="false" text="Button" GridPane.halignment="CENTER" />
<Button mnemonicParsing="false" text="Button" GridPane.halignment="CENTER" GridPane.rowIndex="1" />
<Button mnemonicParsing="false" text="Button" GridPane.columnIndex="1" GridPane.halignment="CENTER" />
<Button mnemonicParsing="false" text="Button" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="1" />
</children>
</GridPane>
</center>
</BorderPane>
小结:用最简洁的代码实现功能,是我这个小白向来奉行的原则~~~
我本来可以很开心,都是没钱害了我,暴风哭泣!