可与父级缩放的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