当前位置: 首页 > 面试题库 >

可与父级缩放的JavaFX布局

温星华
2023-03-14
问题内容

由于增强的
多媒体功能,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而不是Swing,因为它增强了多媒体、webviewer和使用视觉效果的可能性。但是,我从web上(http://docs.oracle.com/JavaFX/2/layout/jfxpub-layout.htm等)找到的东西中学到的是,JavaFX布局管理器侧重于根据内容的大小缩放父级的大小,而Swing侧重于根据父级缩放内容,至少是根据正在使用的缩放内容。 现在我

  • 我的JavaFX 8应用程序中有以下代码,用于控制添加到场景中的画布元素的变换比例: 问题是,就像它所说的,附加到转换中,并且由于浮点精度,每次滚动时缩放级别都会略有不同。 由于某些原因,我必须修改图形上下文转换,而不是直接修改画布(换句话说,要进行翻译,我必须使用transform.setTx(…) 而不是画布。setTranslateX(…) 。 解决方案是设置转换的尺度,同时考虑枢轴点(即鼠

  • 缩放画布时,有什么方法可以阻止这种模糊吗?我想这和GPU插值有关。但我这里需要的是一个像素完美的“像素化”变焦。只需使用最近的“真实”相邻像素的颜色。 我在这里看到了解决方案,但在这两个解决方案中,有一个建议工作(#1/#4),#4肯定是CPU扩展,而#1我猜也是。 这种缩放需要快速——我希望能够支持多达20-25层(可能是StackPane中的画布,但我对其他想法持开放态度,只要它们不融化中央处

  • 我一直在尝试使用JavaFX中的缩放转换,但还没有完全理解它。基本上,我有一个窗格包含一个复杂的图形,并希望能够撤销它。缩放部分本身工作得很好,但是,封闭的滚动窗格将不适应图形。 为了简单起见,我将发布一个简短的示例,其中我的图被一个标签替换: null 我错过了什么?如何使滚动窗格适应内容视图? 谢谢你的帮助。

  • 我想在JavaFX中实现一个linechart,它应该是可缩放/可滚动的。 我使用SceneBuilder创建图表,所有数据都正确显示。我的目标是用户能够放大和滚动到侧面(x轴)。

  • 我喜欢用Javafx和FXML布局编写一个九人莫里斯游戏,我将使用场景生成器进行图形部分。 谁能给我写一个关于拖放的小例子吗?因为这是一场九人莫里斯的比赛,我只喜欢拖拽,并有一些我可以扔下碎片的点。