与父级扩展的JavaFX布局
我在项目中使用
JavaFX而不是Swing,因为增强的多媒体,webviewer和使用视觉效果的可能性.然而,我从网上(
http://docs.oracle.com/javafx/2/layout/jfxpub-layout.htm和其他人)发现的东西中学到的是,JavaFX布局管理器专注于根据内容的大小缩放父级的大小,而Swing则专注于根据内容的大小缩放内容.父级,至少基于正在使用的布局.
现在我正在使用手风琴和一些TitledPane孩子.其中一个包含GridPane,原因很简单,这是我知道模拟GridLayout的最佳方式(正如我从上一个问题中学到的那样:JavaFX layout equivalent to GridLayout).我希望将TitledPane的内容分为2行1列,每行在TitledPane中使用50%的可用空间高度(使用舞台或场景缩放),相当于一个GridLayout(2,1) BorderLayout.CENTER会完成.为此,我使用setPercentHeight(50)添加了一个带有2个RowConstraints的GridPane,并使用setPercentWidth(100)添加了1个ColumnConstraint.但是,我注意到内容正在适当地缩放网格,但网格没有占用TitledPane中的所有可用空间(因为它显然不像BorderPane的中心).我也尝试使用setMaxWidth来使内容扩展到父级,但它似乎也不起作用(如此处所述:JavaFX: How to make my custom component use all available space from parent layout?).即使它会,我是否需要在我的UI元素树中将最大宽度设置为EACH后代,以使它们全部缩放? 无论哪种方式,有没有人知道如何制作一个TitledPane,其中有两个相等的空间,在另一个下面,与标题窗格的大小成比例? 解决方法
实际上,您的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); gridPane.add(new TextArea("World"),1); titledPane.setContent(gridPane); accordion.getPanes().add(titledPane); 如果执行此代码,则gridpane将填充其所有父代(检查红色跨越所有标题窗格内容). 但是,gridpane的内容不会填充所有列.如果您尝试调整窗口大小,您将看到textareas的宽度与gridpane一起没有变化. ColumnConstraints columnConstraints = new ColumnConstraints(); columnConstraints.setFillWidth(true); columnConstraints.setHgrow(Priority.ALWAYS); gridPane.getColumnConstraints().add(columnConstraints); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |