刚刚测试了gridpane这个布局管理器,因为它和xaml的grid布局控件很相似,xaml布局中我用的最多的就是grid了,所以首先搞懂javafx的gridpane
主要关注的就是girdpane的自动拓展尺寸的功能,我需要的是一个可以自动扩展尺寸的gridpane,就像grid那样,但是默认情况下,gridpane并不支持拓展空间,不信可以试试
API上查找了一下,发现了这样一段话
By default the gridpane will resize rows/columns to their preferred sizes (either computed from content or fixed), even if the gridpane is resized larger than its preferred size. If an application needs a particular row or column to grow if there is extra space, it may set its grow priority on the RowConstraints or ColumnConstraints object.
翻译过来
默认gridpane将调整行/列首选大小(根据内容计算或固定尺寸),即使gridpane大小大于它的首选大小(它也不会自动调整大小,我加上的)。如果一个应用程序需要一个特定的行或列成长如果有多余的空间,它可以设置优先增长RowConstraints或ColumnConstraints对象。例如:
GridPane gridpane = new GridPane();
ColumnConstraints column1 = new ColumnConstraints(100,100,Double.MAX_VALUE);
column1.setHgrow(Priority.ALWAYS);
好吧,说到这里应该很到位了,但是在javafx的fxml中如何设定呢?下面就是解决方法,其实很简单
<GridPane vgap="1" hgap="1" id="AnchorPane" prefHeight="2000" prefWidth="500" styleClass="mainFxmlClass" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Frame2XML.Frame2Controller">
<stylesheets>
<URL value="@frame2.css"/>
</stylesheets>
<TableView GridPane.hgrow="ALWAYS" >
<columns>
<TableColumn text="路径" />
<TableColumn text="路径" />
<TableColumn text="路径" />
</columns>
</TableView>
</GridPane>
这样,tableview就可以随着界面尺寸变化而变化了,怎么样,是不是很强大。