我有一个JavaFX应用程序,我希望用户能够控制lineChart中的符号,线条样式等。我想要将这个功能构建到Java代码中,而不是创建多个样式表。感谢Jewelsea之前发布的优秀示例,我可以动态地改变线条样式,这很棒!但我没有设法改变默认的符号样式。
我不清楚在调用node.setStyle时可以逐字逐句使用多少.css语句。即,我看到'-fx- *'命令可以从Java代码中运行。但是.css文件中的符号是用不同的语法定义的,只是在Java中将css行插入我的代码中是行不通的。
以下是我的代码中的示例:
StringBuilder styleString = new StringBuilder();
// do some stylin'
switch (getLineStyle.getValue().toString()) {
case "Line and points":
styleString.append("-fx-stroke: blue; -fx-stroke-width: 2; ");
styleString.append(
".chart-symbol {-fx-background-color: blue; -fx-background-radius: 3px;}");
engChart.setCreateSymbols(true);
break;
case "Line only":
styleString.append("-fx-stroke: blue; -fx-stroke-width: 2; ");
engChart.setCreateSymbols(false);
break;
如果是“线和点”,我可以使用此代码控制颜色和宽度,但是控制符号的尝试失败了。我从这里采用了语法:
http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html#introscenegraph
如果有更好的参考用于内联控制,我会很高兴知道它是什么。
任何人都可以告诉我如何正确操作符号,内联?谢谢。
答案 0 :(得分:3)
您不能在样式字符串中附加样式类定义。 您只能在css文件中定义样式类。 因此,创建和load your own css file并覆盖现有的符号样式或创建自己的符号样式。
default stylesheet for JavaFX 2.2包含以下定义:
.chart-line-symbol {
-fx-background-color: #f9d900, white;
-fx-background-insets: 0, 2;
-fx-background-radius: 5px;
-fx-padding: 5px;
}
.default-color0.chart-line-symbol { -fx-background-color: #f9d900, white; }
.default-color1.chart-line-symbol { -fx-background-color: #a9e200, white; }
.default-color2.chart-line-symbol { -fx-background-color: #22bad9, white; }
.default-color3.chart-line-symbol { -fx-background-color: #0181e2, white; }
.default-color4.chart-line-symbol { -fx-background-color: #2f357f, white; }
.default-color5.chart-line-symbol { -fx-background-color: #860061, white; }
.default-color6.chart-line-symbol { -fx-background-color: #c62b00, white; }
.default-color7.chart-line-symbol { -fx-background-color: #ff5700, white; }
因此,要么提供自己的.chart-line-symbol定义,要么在图表中添加新的样式类,例如chart.getStyleClass().add("custom-chart")
,然后在css文件中定义自定义图表符号。
.custom-chart .chart-line-symbol {
-fx-background-color: #f9d900, firebrick;
-fx-background-radius: 0px;
}