Estou tentando criar uma propriedade de estilo CSS personalizada para meu componente, com vários valores de cor, como -fx-background-color. Mas estou travado, pois, apesar de definir minha propriedade CSS de forma semelhante à propriedade -fx-background-color, apenas o primeiro valor de cor é analisado da declaração CSS. Esta é a declaração CSS:
.default-chart-theme {
-jfc-default-paint-sequence: red,white,green,blue,yellow,orange,gray;
}
E esta é a declaração CssMetadata na classe java:
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 } );
no getCssMetaData eu também retorno essa propriedade e ela também é analisada, mas em vez de uma sequência de pintura, ela é analisada apenas como um único valor de cor.
Também recebo um aviso ao processar a propriedade 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
Qualquer conselho sobre como criar uma propriedade CSS é bem-vindo. Tentei pesquisar no Google e também usar o Perplexity para obter informações sobre esse problema, mas não encontrei nada útil para resolvê-lo.
Obrigado!