我是来自 JavaFX 1.3 的 scala 新手,这是我在 stackoverflow 中的第一篇文章
在 JavaFX 1.3 我可以做这样的事情
property : bind if (condition) value1 else value2
在 Scala 中,我尝试做这样的事情:
property <== function1
def function1() = {
if (condition)
value1
else
value2
}
但是,它似乎不是动态工作的。当舞台出现时,函数条件中的表达式只计算一次。我有点期待该表达式中的值是实时评估的。
具体来说,我想将某些东西调整到某个限制,并且我正在使用绑定来实现它。因此,我希望绑定函数继续评估表达式,并在我调整其他事物的大小时给我适当的宽度。
无论如何,我将在下面粘贴实际代码:
var stageWidth = DoubleProperty(0)
var stageHeight = DoubleProperty(0)
stageWidth <== stage.scene.width
stageHeight <== stage.scene.height
var origStageWidth = DoubleProperty(stage.scene.width.toDouble)
val origStageHeight = DoubleProperty(stage.scene.height.toDouble)
val origTextClipperWidth = DoubleProperty(textClipper.width.toDouble)
val origTextClipperHeight = DoubleProperty(textClipper.height.toDouble)
val minWidth = DoubleProperty(100)
val origButtonWidth = DoubleProperty(button.prefWidth.toDouble)
textClipper.width <== resize
def resize() ={
var boolResult = (stageWidth - origStageWidth) + origTextClipperWidth > minWidth
if (boolResult.value) {
(stageWidth - origStageWidth) + origTextClipperWidth
} else {
minWidth
}
}
textClipper.height <== (stageHeight - origStageHeight) + origTextClipperHeight
在此先感谢您的帮助。