- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个错误效果,如果用户输入了错误的数据值,我会在 TextFields 上设置它并为其设置动画。
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 这样的不同效果,则不会发生这种情况,禁用的 TextFields 具有默认颜色并且不继承 InnerShadows 颜色。
我想使用 DropShadow 来完成这项工作,但我不明白为什么会发生这种情况,但使用 InnerShaddow 却不会发生。
最佳答案
我试过 DVarga 的解决方案,但我得到了奇怪的结果。
我意识到这不是颜色问题,而是不透明度问题。
Googlin for similar opacity issues 我遇到了这个答案,这是一个完全不同的问题,但我仍然尝试了解决方案并且它有效: https://stackoverflow.com/a/35712919/2821023
似乎这是一个错误,不透明度被应用了两次。它已经被报道过,所以有可能有一天它会被修复。答案还解释了为什么 ScrollPane 中禁用的组件要轻得多,请参见上图。 javafx 中的禁用组件似乎存在很多问题...
因此,我通过在我的 TextFields 上将不透明度设置为 1 解决了我的问题。
textField.setOpacity(1);
编辑:
好吧,我认为这是初始化的问题,所以在组件初始化后设置不透明度解决了它。
但是我尝试通过 fxml 设置不透明度:
<TextField fx:id="groupTextField" promptText="Group" opacity="1" />
它仍然有效,我什至收到一条警告:
Attribute is redundant because it contains default value
谁能解释一下这是怎么回事?如何在其当前拥有的组件上设置相同的不透明度值可以解决任何问题?
关于css - Javafx禁用Node继承DropShadow的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39260136/
我是一名优秀的程序员,十分优秀!