首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javafx禁用节点继承DropShadow的颜色

Javafx禁用节点继承DropShadow的颜色
EN

Stack Overflow用户
提问于 2016-08-31 22:43:41
回答 1查看 253关注 0票数 0

我已经创建了一个错误效果,如果用户输入了不正确的数据值,我会在TextFields上设置并动画它。

代码语言:javascript
复制
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中却不会发生。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-01 09:56:56

我尝试过DVarga的解决方案,但我得到了奇怪的结果。

我意识到这不是一个颜色问题,而是一个不透明的问题。

对于类似的不透明性问题,我遇到了一个完全不同的问题,但我仍然尝试了这个解决方案,它起了作用:https://stackoverflow.com/a/35712919/2821023

似乎这是一个错误,不透明度被应用了两次。它已经被报道了,所以有可能有一天它会被修复。另外,这个答案解释了为什么ScrollPane中的禁用组件要轻得多,请参阅上面的图片。javafx中的禁用组件似乎存在很多问题.

因此,我通过在TextFields上将不透明度设置为1来解决我的问题。

代码语言:javascript
复制
textField.setOpacity(1);

编辑:

好的,我以为它是初始化的,所以在组件初始化解决后设置不透明度。

但是,我尝试通过fxml设置不透明度:

代码语言:javascript
复制
<TextField fx:id="groupTextField" promptText="Group" opacity="1" />

它仍然有效,我甚至收到警告说:

代码语言:javascript
复制
Attribute is redundant because it contains default value

有人能解释一下这是怎么回事吗?如何在它当前拥有的组件上设置相同的不透明度值可以解决任何问题?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39260136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档