我尝试为我的组件创建一个自定义 CSS 样式属性,其中包含多个颜色值,例如 -fx-background-color。但是我遇到了问题,尽管我定义了类似于 -fx-background-color 属性的 CSS 属性,但只有第一个颜色值会从 CSS 声明中解析出来。以下是 CSS 声明:
.default-chart-theme {
-jfc-default-paint-sequence: red,white,green,blue,yellow,orange,gray;
}
这是 java 类中的 CssMetadata 声明:
public final CssMetaData<StyleableChartViewer, Paint[]> DEFAULT_PAINT_SEQUENCE = new CssMetaData<>("-jfc-default-paint-sequence", PaintConverter.SequenceConverter.getInstance(), new Paint[] { Color.RED } )
{
@Override
public boolean isSettable(StyleableChartViewer styleable)
{
return !cssDefaultPaintSequence.isBound();
}
@Override
public StyleableProperty<Paint[]> getStyleableProperty(StyleableChartViewer styleable)
{
return cssDefaultPaintSequence;
}
};
public final SimpleStyleableObjectProperty<Paint[]> cssDefaultPaintSequence =
new SimpleStyleableObjectProperty<>(DEFAULT_PAINT_SEQUENCE, this, "cssDefaultPaintSequence", new Paint[] { Color.RED } );
在 getCssMetaData 中,我也返回了此属性,并且它也被解析,但不是绘画序列,而是仅将其解析为单个颜色值。
处理 css 属性时我也收到警告:
WARNING: Caught 'java.lang.ClassCastException: class javafx.scene.paint.Color cannot be cast to class [Ljavafx.css.ParsedValue; (javafx.scene.paint.Color and [Ljavafx.css.ParsedValue; are in unnamed module of loader 'app')' while converting value for '-jfc-default-paint-sequence' from rule '*.default-chart-theme' in stylesheet
欢迎任何关于如何创建此类 CSS 属性的建议。我尝试过 Google,也尝试过使用 Perplexity 获取一些关于此问题的信息,但没有找到任何有用的解决方法。
谢谢!