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

San*_*ith 5 javafx fxml javafx-8

我正在编写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>
Run Code Online (Sandbox Code Playgroud)

这是行不通的,因为文本不会自动换行,而只是从窗口右侧移开。我需要什么来使它起作用?

Tom*_*iak 6

尝试设置prefWidth和prefHeight,因为您的标签不知道何时开始换行

<VBox prefHeight="100.0" prefWidth="300.0"  ...
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请尝试在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>
Run Code Online (Sandbox Code Playgroud)

  • 我不确定我了解为什么会这样,但是确实可以。谢谢。 (3认同)
  • @SanderSmith,总结了我在JavaFX方面的经验。 (2认同)