如何在Javafx中为XML文件创建常量变量

Kyl*_*lff 6 java xml variables javafx fxml

StackPane layoutY="70.0" prefHeight="479.0".我想在Java文件中创建值(70.0)(479.0)静态,以便我可以将它们用于其他文件.

这可能吗?

Jam*_*s_D 11

如果你的常量是在类中定义的:

public class SomeClass {

    public static final double DEFAULT_HEIGHT = 479 ;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后你可以在FXML中访问它,如下所示:

<StackPane>
    <prefHeight>
        <SomeClass fx:constant="DEFAULT_HEIGHT" />
    </prefHeight>
</StackPane>
Run Code Online (Sandbox Code Playgroud)

确保您在所使用的类的fxml文件中具有适当的导入.


aw-*_*ink 10

James_D向您展示了使用自定义类的方式.在fxml中执行此操作的另一种方法是定义自己的变量.但它们不能跨文件共享.

而不是这个

<StackPane layoutY="70.0" prefHeight="479.0">
Run Code Online (Sandbox Code Playgroud)

你想拥有

<StackPane layoutY="$variable" prefHeight="$variable">
Run Code Online (Sandbox Code Playgroud)

你可以这样做

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane xmlns:fx="http://javafx.com/fxml/1" id="AnchorPane" prefHeight="200" prefWidth="320"  fx:controller="javafxapplication22.FXMLDocumentController">
  <fx:define>
    <Double fx:id="layoutY"  fx:value="70.0"/>
    <Double fx:id="prefHeight" fx:value="479.0"/>
  </fx:define>
  <children>
    <StackPane layoutY="$layoutY" prefHeight="$prefHeight"/>
    <Pane layoutY="$layoutY" prefHeight="$prefHeight"/>  
  </children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)