如果用戶輸入的數據值不正確,我創建了一個錯誤效果,我在TextField上設置了它併爲其設置動畫效果。Javafx已禁用節點繼承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且半徑只在動畫期間更改,因此通常無法看到紅色。
如果我使用像在內陰影,這不會發生不同的效果,殘疾人的TextField都有默認的顏色和不繼承InnerShadows顏色。
我想用DropShadow進行這項工作,但我無法理解爲什麼會出現這種情況,但InnerShaddow不會發生這種情況。
我只是評論而不是回答,因爲我不知道原因(可能是一個錯誤?),但將下列內容添加到您的'ErrorEffect'構造函數可修復問題:'radiusProperty()。addListener((obs,oldVal ,newVal) - > setColor(newVal.doubleValue()== 0d?Color.TRANSPARENT:Color.RED));'。它的功能只是在半徑達到零時將效果顏色設置爲透明,否則顏色保持爲紅色。你也可以用'KeyFrame'來做同樣的事情,但我發現這個擴展很簡單。 – DVarga