可与父级缩放的JavaFX布局

由于增强的

多媒体功能,Webviewer和使用视觉效果的可能性,因此我在项目中使用JavaFX而不是Swing 。但是,

从网上

(http://docs.oracle.com/javafx/2/layout/jfxpub-layout.htm等)上

了解到的是JavaFX布局管理器专注于缩放父

基于所述内容的大小,而摇摆上论点集中缩放

根据父内容,至少基于所述Layout被

使用。

现在我正在Accordion和一些TitledPane孩子一起使用。其中一个

包含一个GridPane,原因很简单,它是我所知

模拟的最佳方式GridLayout(正如我从此处的上一个问题中学到的:JavaFX

布局等效于GridLayout)。我想将TitledPane的内容分为2行和1列,每行的内容中的可用空间的高度为50%

TitledPane(用Stage或缩放Scene),等于aGridLayout(2,1)内部的效果BorderLayout.CENTER。为此,

我添加了GridPane2个RowConstraint使用的asetPercentHeight(50)

和1个ColumnConstraint添加的setPercentWidth(100)。但是,我注意到内容随网格正确缩放,但是网格并未占用网格中的所有可用空间TitledPane(因为显然它的行为不像BorderPane的中心)。我也尝试过与 父级setMaxWidth进行

内容缩放,但似乎也不起作用(如此处所述:JavaFX:如何使自定义组件使用

父级布局中的所有可用空间?)。即使可以,我是否需要在UI

元素树中将最大宽度设置为EACH后代,以使其全部缩放?

不管哪种方式,有谁知道如何 在彼此下方以标题窗格的大小进行缩放的情况下在彼此之间TitledPane有2个相等的空间

回答:

实际上,您的网格窗格正在增长以填充其所有父级。考虑下面的

代码,为调试

目的,我在网格窗格中添加了背景色(红色)。

Accordion accordion = new Accordion();

TitledPane titledPane = new TitledPane();

titledPane.setText("Title");

GridPane gridPane = new GridPane();

gridPane.setStyle("-fx-background-color:red");

gridPane.add(new TextArea("Hello"), 0, 0);

gridPane.add(new TextArea("World"), 0, 1);

titledPane.setContent(gridPane);

accordion.getPanes().add(titledPane);

如果执行此代码,

则网格窗格将填充其所有父对象(检查标题窗格内容中的红色范围)。

但是,网格窗格的内容不会填充所有列。如果您尝试

调整窗口的大小,您将看到文本区域的

宽度和网格面积没有变化。要解决此问题,您需要告诉

网格窗格的第一列与网格窗格本身一起增长。这样做的方法是添加

以下约束:

ColumnConstraints columnConstraints = new ColumnConstraints();

columnConstraints.setFillWidth(true);

columnConstraints.setHgrow(Priority.ALWAYS);

gridPane.getColumnConstraints().add(columnConstraints);

以上是 可与父级缩放的JavaFX布局 的全部内容, 来源链接: utcz.com/qa/399775.html

回到顶部