使用 FXML 在 VBox 中包装标签文本

Wrapping Label text in a VBox using FXML

我正在编写 JavaFX 应用程序,我想创建一个包含 2 段长文本的屏幕。提前不知道文是什么,运行时会用一些代码补上

为此,我想我会制作一个带有 2 个标签的 VBox。我假设如果我不添加维度,标签将跨越 VBox。由于文字很长,我想把它换行。

这是我尝试过的 FXML:

<VBox spacing="20" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Label fx:id="label1" text="Dummy Text" wrapText="true" />   
      <Label fx:id="label2" text="Dummy Text" wrapText="true" />  
   </children>
</VBox>

这不起作用,因为文本没有换行,只是从 window 的右侧消失了。我需要什么才能让它工作?

尝试设置 prefWidth 和 prefHeight ,因为你的标签不知道什么时候开始换行

<VBox prefHeight="100.0" prefWidth="300.0"  ...

如果这不起作用,请在 HBox 的父容器上尝试。 您在使用场景生成器吗?我推荐你使用它

效果很好(自动生成):

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="333.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
   <center>
      <VBox prefHeight="200.0" prefWidth="325.0" BorderPane.alignment="CENTER">
         <children>
            <Label text="Wrap text Wrap text Wrap text Wrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap textWrap text" wrapText="true" />
            <Label layoutX="10.0" layoutY="10.0" text="just textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust textjust text" />
         </children>
      </VBox>
   </center>
</BorderPane>

您是否使用了带有 class 名称 "label1" 和 "label2" 的样式表,如果您使用了,设置 wrapText="true" 将无法在 fxml 代码中工作

  1. 您尝试删除 id 并查看它是否在 wrapText="true" 仍然设置时换行

  1. 将一些 css 代码添加到那个 css 文件中,在特定的 class;
  2. 中将像这样 -fx-word-wrap: break-word; 的文本换行