javafx通过setStyle为选定/悬停的ToggleButton更改背景图像

时间:2018-08-07 12:41:15

标签: java css javafx togglebutton

我有一个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的功能...

0 个答案:

没有答案