我在动画完成后尝试对同一个矩形执行两个不同的操作:矩形必须更改颜色,并且其中的文本必须变为可见。但程序只执行第二个事件,忽略第一个事件(即使我切换它们)。我怎样才能使它工作?
public void open() {
RotateTransition trans = new RotateTransition(Duration.seconds(1), rec);
trans.setToAngle(180);
trans.setAxis(Rotate.Y_AXIS);
trans.setOnFinished (event -> tex.setVisible(true));
trans.setOnFinished (event -> rec.setFill(Color.WHITE));
trans.play();
答案 0 :(得分:1)
或者:
只需将它们放在同一个事件处理程序中:
trans.setOnFinished(event -> {
text.setVisible(true);
rec.setFill(Color.WHITE);
});
或将更改侦听器添加到statusProperty
:
trans.statusProperty().addListener((obs, oldStatus, newStatus) -> {
if (newStatus == Animation.Status.STOPPED) {
text.setVisible(true);
}
});
trans.statusProperty().addListener((obs, oldStatus, newStatus) -> {
if (newStatus == Animation.Status.STOPPED) {
rec.setFill(Color.WHITE);
}
});