gpt4 book ai didi

java - 有没有更简单(更轻松)的方法来使用 JavaFX 8 将文本居中放置在 "zone"中?

转载 作者:行者123 更新时间:2023-11-29 05:12:04 26 4
gpt4 key购买 nike

所以,首先,我已经实现了我想要的,即在“区域”的中心显示一些文本。截图(右上角):

enter image description here

现在,我遇到的问题是我是如何做到这一点的……这是整个选项卡的 FXML 摘录:

<Tab text="Statistics" closable="false">
<SplitPane orientation="VERTICAL" dividerPositions="0.5">
<SplitPane orientation="HORIZONTAL" dividerPositions="0.5">
<GridPane gridLinesVisible="false">
<!-- snip -->
</GridPane>
<!-- HERE -->
<BorderPane>
<center>
<Label text="No information"/>
</center>
</BorderPane>
</SplitPane>
<TableView fx:id="stats">
<!-- snip -->
</TableView>
</SplitPane>
</Tab>

如您所见,为了实现直观上应该很简单的功能(在区域中心显示一些文本),我必须创建一个 BorderPane并放一个 Label在其 <center> ;而且我什至不必指定标签上的文本应该居中...

我尝试过的其他事情是:

  • Label本身:然后是 ScrollPane 的分隔符会被公然忽视;左侧将扩展到 Scene 的整个宽度(是吗?)减去分隔线的宽度加上标签的文本,而且文本将位于区域的顶部;
  • AnchorPane 括起来: 虽然这确实会保持区域的大小,但文本会出现在左上角而不是中心。

是否有比上述更简单的解决方案?

最佳答案

使用 StackPane而不是 BorderPane .默认情况下,StackPane 会将您放入其中的任何节点居中。对我来说,这是最简单、最直观的解决方案。

<StackPane>
<Label text="No information"/>
</StackPane>

处理它的另一种方法是对标签本身设置约束,以便标签将扩展以填充可调整大小的区域并在区域内居中:

<SplitPane dividerPositions="0.5" 
prefHeight="400.0"
prefWidth="600.0"
xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8">
<items>
<StackPane />
<Label alignment="CENTER"
maxHeight="1.7976931348623157E308"
maxWidth="1.7976931348623157E308"
text="Label" />
</items>
</SplitPane>

如果它是多行标签(例如它在文本中有 \n 新行或可用宽度强制换行,因为您限制了宽度并设置了 wrapText="true "),那么您需要一个额外的设置来使标签内的多行文本居中:textAlignment="true"textAlignment 不同于alignment;特别是,textAlignment 仅适用于多行控件。

关于java - 有没有更简单(更轻松)的方法来使用 JavaFX 8 将文本居中放置在 "zone"中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28075994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com