是否可以在 FXML 中使用算术表达式?

Is it possible to use arithmetic expression in FXML?

我希望有一个功能可以让我在 FXML 中处理数字。例如,试图定义一个元素的高度等于一个常数,第二个元素的高度等于同一个常数乘以 2(即 constant * 2)。是否可以在 FXML 中完成,或者我是否需要在控制器内部完成这部分视图构建(我想避免)?

使用表达式绑定

您可以使用 expression binding.

<TextField fx:id="textField" prefWidth="40"/>
<Label prefWidth="${textField.prefWidth * 2}"/>

关于 FXML 中的常量定义

您可以访问 constant defined in FXML or an FXML definition

在以下问题的答案中有一个使用这种方法的示例:

请参阅该答案中标题为:"Using em units in FXML via expression binding".

的部分

关于 CSS

中的常量定义

BTW, is it possible to define constants in CSS? I thought the OP meant a constant inside FXML, but mentioned CSS.

我在 FXML 中也假设了一个常量,直到我 re-read 它说 "defined i.e. inside a CSS" 的问题。而且,是的,您不能真正在 JavaFX CSS 中定义常量,最接近的可能是 looked-up-color, but that is pretty specific and a little different. If you pass the CSS through a pre-processor like LESS or SASS,那些系统允许定义常量(LESS 混淆地称为变量 :-)。但是,您无法通过 FXML 直接访问此类信息。

是的,有可能:

<?import java.lang.Double?>

...

<fx:define>
    <Double fx:id="xHeight" fx:value="100" />
</fx:define>

...

<Label fx:id="lblElementOne" prefHeight="$xHeight" />
<Label fx:id="lblElementTwo" prefHeight="${xHeight * 2}" />