gpt4 book ai didi

css - JavaFX - 在 css 中为混合模式获取类转换异常

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:00 25 4
gpt4 key购买 nike

JavaFX CSS Guide建议通过CSS设置混合模式如下:

-fx-blend-mode: blue

但是在将以下 CSS 字符串应用于文本节点时出现异常:

-fx-blend-mode:green;
-fx-fill:rgba(0.501960813999176,0.4000000059604645,0.800000011920929,1.0);
-fx-font-size:52;
-fx-font-style:normal;
-fx-font-weight:normal

异常(exception):

Dec 05, 2014 12:54:23 PM javafx.scene.CssStyleHelper calculateValue
WARNING: Caught 'java.lang.ClassCastException: javafx.scene.paint.Color cannot be
cast to java.lang.String' while converting value for '-fx-blend-mode' from
inline style on Text[text="Title At Company", x=0.0, y=0.0, alignment=LEFT,
origin=BASELINE, boundsType=LOGICAL, font=Font[name=System Regular, family=System,
style=Regular, size=13.0], fontSmoothingType=GRAY, fill=0x000000ff]

是 CSS 字符串错误还是什么?我只需要通过 CSS 应用混合模式。

最佳答案

如果您尝试使用其他可能的值设置属性 -fx-blend-mode,它们中的大多数都可以工作。但这些不是:addbluegreenred

通过一些调试,您可以找到此方法 CSSParser.parse(),它被调用来解析规则 -fx-blend-mode:green;:

if (needsLookup || ((value = colorValueOfString(str)) == null )) {
value = new ParsedValueImpl<String,String>(str, null, isIdent || needsLookup);
}

您可以看到,如果字符串 ("green", "red", "blue") 匹配一种颜色,那么它将被解析为 Color。然后规则将失败,因为它期待一个 BlendMode 枚举,从字符串解析,而不是从颜色解析。

请注意,这也发生在 add 上,因为它已转换为 0xaaddddff。

这里的解决方法是通过代码设置它:

text.setBlendMode(BlendMode.GREEN);

最后,这些值将不起作用:src-insrc-out,因为它们已从 BlendMode 中删除。您不能通过代码设置它们,但您仍然可以通过 CSS 选择它们。您将收到此警告:

Caught java.lang.IllegalArgumentException: No enum constant javafx.scene.effect.BlendMode.src_in' ...

如果您认为应该解决此问题,请考虑向 Jira 提交错误。

关于css - JavaFX - 在 css 中为混合模式获取类转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27311222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com