我希望有一个功能可以让我在FXML中使用数字。例如,尝试将一个元素的高度定义为等于常量,将第二个元素的高度定义为等于相同的常量* 2。是否有可能在FXML中完成它或者我是否需要在控制器内部进行这部分视图构建(我想避免)?
答案 0 :(得分:3)
是的,有可能:
<?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}" />
答案 1 :(得分:2)
使用表达式绑定
您可以使用expression binding.
<TextField fx:id="textField" prefWidth="40"/>
<Label prefWidth="${textField.prefWidth * 2}"/>
关于FXML中的常量定义
您可以访问constant defined in FXML或FXML definition。
在答案中有一个使用这种方法的例子:
请参阅该答案中标题为的部分:&#34;通过表达式绑定使用FXML中的em单位&#34;。
关于CSS中的常量定义
BTW,是否有可能在CSS中定义常量?我认为OP意味着FXML内部不变,但提到了CSS。
我在FXML中也假设了一个常数,直到我重新阅读它所说的&#34;定义的问题,即在CSS&#34;中。而且,是的,您无法在JavaFX CSS中真正定义常量,最接近的可能是looked-up-color,但这是非常具体的,有点不同。如果你通过像LESS或SASS之类的预处理器传递CSS,那些系统允许定义常量(LESS容易混淆地称为变量:-)。但是,您无法通过FXML直接访问此类信息。