【发布时间】:2017-09-13 06:48:51
【问题描述】:
我希望用户可以通过设置菜单编辑应用 UI 颜色。 默认颜色在 .css 文件中定义,例如:
.vertex {
-fx-fill: rgba(64, 196, 255, 1);
}
在上面的示例中,我想将 -fx-fill color 覆盖为用户将从颜色拾取对话框中选择的任何内容。是否可以在运行时更新 CSS 类属性?怎么样?
【问题讨论】:
我希望用户可以通过设置菜单编辑应用 UI 颜色。 默认颜色在 .css 文件中定义,例如:
.vertex {
-fx-fill: rgba(64, 196, 255, 1);
}
在上面的示例中,我想将 -fx-fill color 覆盖为用户将从颜色拾取对话框中选择的任何内容。是否可以在运行时更新 CSS 类属性?怎么样?
【问题讨论】:
您可以在 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 + " ;");
【讨论】:
-vertex-color 的值应用于 CSS 类 vertex 的任何内容的填充。 Java 代码更改root 元素的-vertex-color 的值,这将把该值应用于根节点的所有后代。所以效果将是用 CSS 样式类vertex 更改根节点的所有后代的填充。我添加了用于创建所选颜色的字符串表示的代码。