JavaFX标签未更新高度

问题描述 投票:0回答:2

我有一个标签来显示一些文本,其中的文本是无文字的。然后,我在主窗口内以这种方式在其中添加带有标签的新节点:

    Parent root = null;
try{
    FXMLLoader loader = new FXMLLoader(getClass().getResource("/resources/message.fxml"));
    root = loader.load();
    ObsMessage obsMessage = loader.getController();

    obsMessage.definirMessage( This is where my label's text is modified);

} catch(IOException e){
    e.printStackTrace();
}
vboxPrincipale.getChildren().add(root);`

因此,当我的标签高出几行时,我得到以下结果:enter image description here

我将标签的首选高度及其父组件设置为USE_COMPUTED_SIZE,并将Vgrow设置为always。如果我在将节点初始化为500px高时手动设置标签的高度,则它会调整大小。那为什么我的标签没有调整大小?

编辑:用于生成消息气泡的FXML文件:

<BorderPane fx:id="borderPaneMessage" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="130.0" minWidth="-Infinity" prefWidth="970.0" style="-fx-background-color: WHITE; -fx-border-color: BLACK; -fx-border-width: 2;" stylesheets="@styleFenetre.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="vue.javafxobservers.ObsMessage">
   <top>
      <GridPane BorderPane.alignment="CENTER">
         <columnConstraints>
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
         </columnConstraints>
         <rowConstraints>
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
         </rowConstraints>
         <Text fx:id="texteNom" strokeType="OUTSIDE" strokeWidth="0.0" text="Prenom nom" GridPane.halignment="LEFT" GridPane.valignment="CENTER">
            <GridPane.margin>
               <Insets bottom="5.0" left="10.0" right="5.0" top="5.0" />
            </GridPane.margin>
         </Text>
         <Text fx:id="texteDate" strokeType="OUTSIDE" strokeWidth="0.0" text="Date" GridPane.columnIndex="1" GridPane.halignment="RIGHT" GridPane.valignment="CENTER">
            <GridPane.margin>
               <Insets bottom="5.0" left="5.0" right="10.0" top="5.0" />
            </GridPane.margin>
         </Text>
      </GridPane>
   </top>
   <center>
      <GridPane BorderPane.alignment="CENTER">
         <BorderPane.margin>
            <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
         </BorderPane.margin>
         <columnConstraints>
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" />
         </columnConstraints>
         <rowConstraints>
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="NEVER" />
            <RowConstraints maxHeight="1.7976931348623157E308" valignment="TOP" vgrow="ALWAYS" />
         </rowConstraints>
         <Label fx:id="texteTitre" text="Titre message" wrapText="true">
            <GridPane.margin>
               <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
            </GridPane.margin>
         </Label>
         <Label fx:id="texteMessage" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Texte du corp du message ici..." wrapText="true" GridPane.halignment="LEFT" GridPane.hgrow="ALWAYS" GridPane.rowIndex="1" GridPane.valignment="TOP" GridPane.vgrow="ALWAYS">
            <GridPane.margin>
               <Insets left="5.0" right="5.0" top="5.0" />
            </GridPane.margin>
         </Label>
      </GridPane>
   </center>
   <bottom>
      <HBox fx:id="boxCommandes" alignment="BOTTOM_RIGHT" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" BorderPane.alignment="CENTER">
         <Hyperlink fx:id="linkModifier" alignment="BOTTOM_RIGHT" text="modifier" textFill="#0000ee" />
         <Hyperlink fx:id="linkSupprimer" alignment="BOTTOM_RIGHT" text="supprimer" textFill="#0000ee" />
      </HBox>
   </bottom>
</BorderPane>
java javafx scenebuilder
2个回答
0
投票

JavaFX中的标签具有wrapText布尔属性。

默认情况下,此属性设置为false,这就是为什么文本超出默认空格的地方会出现点(...)。

更改此属性之一:

  1. 以编程方式使用setWrapText()
  2. 使用JavaFX CSS fx-wrap-text参见CSS Reference

0
投票

他们使它正常工作的方式是在Label的every父组件中使用USE_PREF_SIZE处的maxHeight,在USE_COMPUTED_SIZE处使用prefHeight(对于包含Label的gridPane行)。

© www.soinside.com 2019 - 2024. All rights reserved.