我不明白为什么设置Label.setAlignment(Pos.CENTER_RIGHT)不会影响标签的对齐,然后将其添加到GridPane中?唯一的方法似乎是通过网格(例如列约束)或将标签添加到具有正确对齐的HBox。
为什么将标签的对齐方式设置为CENTER_RIGHT不起作用?我可以看到API说:“指定当标签中有空白时,标签中的文本和图形应该如何对齐。但是,如何在标签中获取空白区域?
TL:DR版本:而不是< code>label.setAlignment(位置。CENTER _ RIGHT);使用< code > grid pane . sethalignment(label,HPos。对);。
JavaFX使用自上而下的布局。因此,场景根据场景的大小调整根节点的大小,根节点根据其布局策略和场景给它的空间量调整每个子节点的大小和位置,然后每个子节点根据自己的布局策略和可用空间量调整其子节点的大小和位置,依此类推。
根据< code>Label的文档,< code>alignmentProperty
指定当“已标记”中存在空白区域时,应如何对齐“已标记”中的文本和图形。
当然,标签可用的空间量由其父级确定,在本例中,父级是网格窗格。当然,您可以通过阅读其文档了解网格窗格的布局策略以及如何配置它。但简而言之:
默认情况下,网格窗格会为每个节点分配其首选大小,如果放置的单元格有额外的空间,则会将节点对齐在网格单元格的左上角。标签的首选大小当然是计算的大小:刚好足够容纳其内容。因此,您会看到简单地将标签放入网格窗格并在标签上设置对齐不会有任何效果,因为标签的大小刚好足够容纳其内容,并且没有额外的空间来对齐文本/图形。您可以通过在标签上放置背景颜色或边框来可视化这一点。
因此,您可以将标签上的对齐方式设置为CENTER_RIGHT
,然后指示网格窗格允许标签增长。这需要两件事:首先,告诉网格窗格让标签填充单元格的宽度:
GridPane.setFillWidth(label, true);
并且,由于网格窗格还将遵循子节点的最大大小,并且默认情况下标签使用其首选大小作为其最大大小,因此允许标签增长:
label.setMaxWidth(Double.MAX_VALUE);
然后标签将增长到单元格的大小,因此,如果您也有
label.setAlignment(Pos.CENTER_RIGHT);
它会将自己的内容对齐到右侧。
更明智的方法可能只是告诉网格窗格如何对齐单元格中的标签:
GridPane.setHalignment(label, HPos.RIGHT);
然后让标签采用默认的大小和对齐方式,一切都会正常。
您还可以使用< code>ColumnConstraints对象来设置特定列中所有标签的默认对齐方式,如果您正在构建一个窗体,这是一种非常方便的方法。
如何使用< code>GridPane上的权重设置行/列大小? 例如,如果我想要五行,其中三行是未知的固定大小,一行占用剩余空间的三分之一,另一行占用剩余空间的三分之二(见下图),我该如何实现呢? 我查看了使用,其中两个有但这只允许平均共享剩余空间。 我尝试使用百分比,因为我在文档< code >中看到,如果widthPercent(或heightPercent)值的总和大于100,这些值将被视为
我已经创建了两个Javafx网格窗格,我希望它们处于相同的位置,第二个网格窗格必须位于第一个网格窗格旁边的相同位置。因为我跑步时一个接一个。这是我的代码:
我正在尝试使用for循环在JavaFX中迭代地向GridPane添加标签,但当我尝试启动应用程序时,我一直收到错误。控制台输出是: 我是这方面的初学者,但我明白它告诉我,我正在尝试放置一个已经放置的物体。 代码: 然后我继续使用一个标签数组,我相信它不会试图替换一个已经放置的对象,但是我收到了另一个错误: 代码:
主要内容:创建标签,标签内容,标签字体,包装文本,应用效果,标签鼠标事件,更新标签JavaFX API的包中的类可用于显示一个文本元素。 我们可以包装文本元素以适应特定空间,添加图形图像或使用JavaFX 控件应用视觉效果。 以下代码显示如何使用显示文本。 创建标签 JavaFX API提供了类的三个构造函数来创建标签。 标签内容 创建标签后,我们可以使用类中的以下方法添加文本和图形内容。 - 设置标签的文本标题 - 设置图形图标 方法设置文本和图标之间的间距。方法设置标签文本
我用JavaFX做了一个国际象棋棋盘,并把所有的方格设置为GridPane的子方格,有没有办法用GridPane索引来访问这些方格并改变它们的属性? 我尝试通过磁贴矩阵访问一个磁贴来更改磁贴的颜色属性,但它不会更改 GridPane 中显示的磁贴。 的。getChildren()方法返回一个节点列表,一旦tile对象成为节点,我就无法访问它的方法。 这是我的磁贴类: } 这是我的董事会课: