gpt4 book ai didi

java - 如何在 JavaFX 中换行文本

转载 作者:行者123 更新时间:2023-12-02 05:02:03 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的JavaFX应用程序,其中文本以编程方式添加到位于滚动 Pane 中的VBox(这样,当文本太多时,可以滚动窗口以查看整体的其他部分)。

我的问题是我的文本不换行:它们只是在一行中超出窗口。

使用前面的 StackOverflow 答案,我连续尝试过:

  • 停用滚动 Pane 的水平滚动,
  • 使用 fitToWidth="true"设置 ScrollPane
  • 将我的文本 widthProperty 绑定(bind)到其中一个封闭布局的 widthProperty
  • 将我的文本 widthProperty 绑定(bind)到场景本身的宽度属性(我想避免这种情况,因为我需要在 Controller 的 Initialize() 方法中设置第一个,当场景尚不可用时,它不会无论如何,工作)。

这些都没有任何区别(除了水平滚动条的消失,这是毫无意义的,因为无论如何你都可以通过平移来滚动)。

这是我的 fxml:

<BorderPane fx:controller="org.duckdns.spacedock.lifepathfx.PathController" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<center>
<ScrollPane hbarPolicy="NEVER" pannable="true" fitToWidth="true" fx:id="scrollPane" >
<content>
<VBox fx:id="mainBox" >

</VBox>
</content>
</ScrollPane>
</center>
<top>
<ToolBar>
<items>
<Button mnemonicParsing="false" text="Back" onAction="#rollback" />
</items>
</ToolBar>
</top>

这是我添加文本的代码:

private void displayNewParagraph()
{
Text text = new Text(someFunctionReturningAString());
text.wrappingWidthProperty().bind(mainBox.widthProperty().subtract(15));
mainBox.getChildren().add(text);
}

注意:我使用全屏舞台,因为我希望我的应用程序在每个屏幕尺寸上都以相同的方式显示。这就是为什么我没有对文本使用固定宽度。

编辑:我尝试了另一件事:绑定(bind) ScrollPane 和 VBox 宽度属性:

mainBox.maxWidthProperty().bind(scrollPane.widthProperty().subtract(10).subtract(10));
mainBox.minWidthProperty().bind(scrollPane.widthProperty().subtract(10).subtract(10));

它所做的只是停用水平滚动,但文本仍然不换行:所以现在它们超出了窗口,无法完整看到。

编辑2:我也尝试过:

text.setWrappingWidth(mainBox.widthProperty().intValue() - 10);

也不起作用:文本根本不会换行。

Edit3:我尝试了这个简单的实验:

text.setWrappingWidth(150);
System.out.println("wrapping width:" + text.getWrappingWidth());

输出了换行宽度:150,但文本没有换行...现在我很困惑。

最佳答案

好吧,回答我自己的问题,我发现正常的过程是将文本包装在 TextFlow 对象中。这样做,文本就会很好地换行。

我不明白的是,为什么文档中完全没有写到如果文本位于 ScrollPane 的 *Box 中,即使您正确设置了它们的换行宽度,文本也不会换行。

也就是说,它现在可以工作了,文本被添加到 TextFlow 而不是直接添加到 Box,每个人都很高兴。

关于java - 如何在 JavaFX 中换行文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56381373/

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