JavaFx:如何在 FXML 中设置标签的 labelFor 属性?

Pau*_*aul 4 javafx fxml

我有一个 TextField 和一个带有 mnemonicParsing 的标签。我想用 TextField 的 id 设置标签的 labelFor 属性。我如何在 FXML 中做到这一点?

<GridPane hgap="5.0" snapToPixel="false" vgap="10.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
      <Label maxWidth="-Infinity" text="_A Label" GridPane.halignment="RIGHT" GridPane.hgrow="NEVER" GridPane.vgrow="NEVER" mnemonicParsing="true" />
      <TextField id="myTextField" GridPane.columnIndex="1" GridPane.hgrow="NEVER" />
</children>
</GridPane>
Run Code Online (Sandbox Code Playgroud)

谢谢

Puc*_*uce 5

您可以使用美元符号:

<GridPane hgap="5.0" snapToPixel="false" vgap="10.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
    <children>
          <Label labelFor="$myTextField" maxWidth="-Infinity" text="_A Label" GridPane.halignment="RIGHT" GridPane.hgrow="NEVER" GridPane.vgrow="NEVER" mnemonicParsing="true"  />
          <TextField id="myTextField" GridPane.columnIndex="1" GridPane.hgrow="NEVER" />
    </children>
</GridPane>
Run Code Online (Sandbox Code Playgroud)

  • 我发现对我来说,只有当引用的节点 (TextField) 在 FXML 文件中引用它的标签“之前”声明时,这才有效。 (3认同)
  • 我认为 `id="myTextField"` 应该是 `fx:id="myTextField"` (2认同)

Pau*_*aul 4

如果找到解决方案...

<GridPane hgap="5.0" snapToPixel="false" vgap="10.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
      <Label maxWidth="-Infinity" text="_A Label" GridPane.halignment="RIGHT" GridPane.hgrow="NEVER" GridPane.vgrow="NEVER" mnemonicParsing="true">
           <labelFor>
               <TextField id="myTextField" GridPane.columnIndex="1" GridPane.hgrow="NEVER" />
           </labelFor>
      </Label>
      <fx:reference source="myTextField" />
</children>
</GridPane>
Run Code Online (Sandbox Code Playgroud)