是否可以在 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}" />
我希望有一个功能可以让我在 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}" />