사용자가 잘못된 데이터 값을 입력하면 TextFields에 설정하고 애니메이션 효과를 적용하여 오류 효과를 만들었습니다.Javafx 사용 안함 Node가 DropShadow의 색을 상속받습니다.
public class ErrorEffect extends DropShadow {
private Timeline animation = new Timeline();
public ErrorEffect() {
setOffsetX(0);
setOffsetY(0);
setRadius(0);
setColor(Color.RED);
animation.getKeyFrames().addAll(
new KeyFrame(Duration.ZERO, new KeyValue(radiusProperty(), 0)),
new KeyFrame(new Duration(150), new KeyValue(radiusProperty(), 20)),
new KeyFrame(new Duration(500), new KeyValue(radiusProperty(), 0)));
}
public Timeline getAnimation() {
return animation;
}
}
내 문제는 TextField가 사용 중지 될 때마다 DropShadow의 색상을 표시한다는 것입니다. 일반적으로 붉은 색은 반경이 0으로 설정되고 애니메이션 중에 만 반경이 변경되므로 볼 수 없습니다. 나는이 발생하지 않는 InnerShadow 같은 다른 효과를 사용하는 경우
, 장애인 TextField의 기본 색상을 가지고 InnerShadows 색상을 상속하지 않습니다.
이 작업을 DropShadow와 함께하고 싶지만이 문제가 왜 발생하는지 이해할 수는 없지만 InnerShaddow에서는 발생하지 않습니다.
나는 그 이유를 알지 못하기 때문에 답변을하기보다는 코멘트를 달았지만, 다음과 같이'ErrorEffect' 생성자에 다음을 추가하면 문제가 해결됩니다 :'radiusProperty(). addListener ((obs, oldVal , newVal) -> setColor (newVal.doubleValue() == 0d? Color.TRANSPARENT : Color.RED));'. 단순히 반경이 0에 도달하자마자 효과 색상을 투명하게 설정하는 것입니다. 그렇지 않으면 색상이 빨간색으로 유지됩니다. 'KeyFrame's에서도 똑같이 할 수 있습니다 만,이 확장이 정말 간단하다는 것을 알았습니다. – DVarga