我有ImageView
由png图像(透明背景)组成。我想连续改变图像的颜色。我可以使用jfoenix库中的JFXFillTransition
方法更改颜色。该方法的构造函数需要javafx.scene.layout.Region
,因此无法直接应用于javafx.scene.Image.ImageView
。我正在使用VBox
并在ImageView
中添加VBox
。显然,VBox
的宽度默认情况下不会包含内容(此处为ImageView
)。 This提供了包装内容的解决方案。但是这里不能将组用作JFXFillTransition
的参数。因此,如果我运行代码,VBox
的颜色会发生变化但不限于ImageView
(因为VBox
大于图像)。那么,我怎样才能缩小VBox
的大小以便它只包装图像(任何其他适用于此的窗格也可以)?
代码段:
VBox openingImageBox = new VBox();
openingImageBox.setAlignment(Pos.CENTER);
openingImageBox.getChildren().add(openingImageView);
borderPane.setTop(openingImageBox);
//Transition On ImageView
JFXFillTransition transition1 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.VIOLET,Color.INDIGO);
JFXFillTransition transition2 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.INDIGO,Color.BLUE);
JFXFillTransition transition3 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.BLUE,Color.GREEN);
JFXFillTransition transition4 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.GREEN,Color.YELLOW);
JFXFillTransition transition5 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.YELLOW,Color.ORANGE);
JFXFillTransition transition6 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.ORANGE,Color.RED);
JFXFillTransition transition7 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.RED,Color.VIOLET);
transition1.play();
transition1.setOnFinished(e->
{
transition2.play();
});
transition2.setOnFinished(e->
{
transition3.play();
});
transition3.setOnFinished(e->
{
transition4.play();
});
transition4.setOnFinished(e->
{
transition5.play();
});
transition5.setOnFinished(e->
{
transition6.play();
});
transition6.setOnFinished(e->
{
transition7.play();
});
transition7.setOnFinished(e->
{
transition1.play();
});