2017-04-17 72 views
0

我想通过设置菜单让用户编辑应用程序UI颜色。 默认颜色在.css文件中定义,例如:如何在运行时覆盖(编辑)CSS颜色?

.vertex { 
    -fx-fill: rgba(64, 196, 255, 1); 
} 

在上面的例子我想重写-fx填充颜色无论用户将会从颜色拾取对话框中选择。有没有可能在运行时更新CSS类属性?怎么样 ?

回答

1

您可以在CSS文件中使用查到的颜色:

.vertex { 
    -vertex-fill: rgba(64, 196, 255, 1); 
    -fx-fill: -vertex-fill ; 
} 

,然后你可以使用内嵌样式在运行时修改它。您可以在任何组件的祖先上调用setStyle(),它将应用于所有后代组件。例如。适用与样式类.vertex场景改变的一切,现场设置的根的风格:

Color selectedColor = colorPicker.getValue(); 
int red = (int) (255 * selectedColor.getRed()); 
int green = (int) (255 * selectedColor.getGreen()); 
int blue = (int) (255 * selectedColor.getBlue()); 
double opacity = selectedColor.getOpacity(); 
String userColor = String.format("rgba(%d, %d, %d, %f)", red, green, blue, opacity) ; 
scene.getRoot().setStyle("-vertex-fill: " + userColor + " ;"); 
+0

如何参照具体的CSS类?你的例子我想在.root类中设置变量。 另外我没有问这个问题明确,我不期望答案,但这对颜色编辑很重要 - 如何将颜色从.css转换(读取)到Color对象? – ievgen

+0

@ievgen外部文件中的CSS将'-vertex-color'的值应用于CSS类'vertex'的任何东西的填充。 Java代码更改'root'元素的'-vertex-color'的值,该元素将该值应用于根节点的所有后代。所以效果是改变CSS样式类“顶点”的根节点的所有后代的填充。我添加了用于创建所选颜色的字符串表示的代码。 –

+0

理解,非常感谢! – ievgen