我有一个ToggleButtons的ToggleGroup,当未选择时应具有相同的样式,但在选择或悬停时应具有不同的样式。我已经找到了颜色的工作原理:
.my-toggle-button{
-fx-background-color: grey;
}
.my-toggle-button:hover{
-fx-background-color: -fx-mycolor;
}
.my-toggle-button:selected{
-fx-background-color: -fx-mycolor;
}
在我的程序中,我现在可以动态设置-fx-mycolor
:
button.setStyle("-fx-mycolor: "+color);
其中button是许多ToggleButton之一,而color是动态生成的String。
这可以按预期工作:悬停在每个按钮上时都有自己的颜色,选中时保持不变。如果选择了其他按钮,则ToggleGroup中先前选择的按钮将恢复为灰色。
现在,我要使用背景图像进行此操作。我尝试使用
.toggle-button-fret-nonzero:selected{
-fx-background-image: url(-fx-myimage);
}
,然后通过setStyle("-fx-myimage: "+image)
在Java中进行设置,但这是行不通的(CSS尝试加载名为-fx-myimage
的图像)。
如何实现图像颜色所显示的行为?
我已经尝试在某些鼠标事件(例如悬停或单击)上直接使用setStyle("-fx-background-image: url("+image+");")
,但这不是我想要的,因为那样在选择另一个按钮时该按钮不会恢复为灰色。
我也想避免为每个可能的按钮定义CSS类,因为它们很多。
编辑:我通过使用setStyle("-fx-background-image: url("+image+");")
方法并手动遍历每次点击的每个按钮来解决此问题,并相应地重置了背景图片。现在这可以正常工作,只是感觉像是在破解,因为它基本上是在重新实现ToggleButton的功能...