War*_*kst 8 java layout user-interface javafx
我在项目中使用JavaFX而不是Swing,因为增强的多媒体,webviewer和使用视觉效果的可能性.但是,我从网上找到的内容(http://docs.oracle.com/javafx/2/layout/jfxpub-layout.htm等)中了解到,JavaFX布局管理器专注于扩展大小父级基于内容的大小,而Swing专注于根据父级缩放内容,至少基于Layout使用的内容.
现在我正Accordion和一些TitledPane孩子一起使用.其中一个包含一个GridPane简单的原因,它是我知道模仿a的最佳方式GridLayout(正如我从上一个问题中学到的:JavaFX布局等效于GridLayout).我希望将TitledPane内容分为2行1列,每行的可用空间高度为50%TitledPane(使用Stage或缩放Scene),相当于GridLayout(2,1)内部的内容BorderLayout.CENTER.对于这一点,我添加了一个GridPane带有2个RowConstraint使用S setPercentHeight(50)和1个ColumnConstraint带setPercentWidth(100).但是,我注意到内容正在与网格正确缩放,但网格没有占用网格中的所有可用空间TitledPane(因为显然它不像一个BorderPane中心).我也尝试过与setMaxWidth父级进行内容扩展,但它似乎也不起作用(如下所述:JavaFX:如何使我的自定义组件使用父布局中的所有可用空间?).即使它会,我是否需要在我的UI元素树中将最大宽度设置为EACH后代,以使它们全部缩放?
无论哪种方式,有没有人知道如何TitledPane在其下方制作一个2个相等的空间,与标题窗格的大小相称?

小智 10
实际上,您的gridpane正在增长以填充其所有父级.考虑下面的代码,我已经将一个背景颜色(红色)添加到gridpane以进行调试.
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);
Run Code Online (Sandbox Code Playgroud)
如果执行此代码,则gridpane将填充其所有父代(检查红色跨越所有titledpane内容).
但是,gridpane的内容不会填充所有列.如果您尝试调整窗口大小,您将看到textareas的宽度与gridpane一起没有变化.要解决这个问题,您需要告诉gridpane的第一列与gridpane本身一起增长.这样做的方法是添加以下约束:
ColumnConstraints columnConstraints = new ColumnConstraints();
columnConstraints.setFillWidth(true);
columnConstraints.setHgrow(Priority.ALWAYS);
gridPane.getColumnConstraints().add(columnConstraints);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23052 次 |
| 最近记录: |