我正在编写一个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>
这不起作用,因为文本没有换行但只是偏离窗口的右侧。我需要什么才能让它发挥作用?
答案 0 :(得分:4)
尝试设置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>
答案 1 :(得分:0)
你是否在那里使用了带有类名的样式表&#34; label1&#34;和&#34; label2&#34;如果你这样做,设置wrapText="true"
将无法在fxml代码中使用
wrapText="true"
仍然设置时查看它是否已包装或
-fx-word-wrap: break-word;
;