Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx 2 Javafx更改图表颜色_Javafx 2 - Fatal编程技术网

Javafx 2 Javafx更改图表颜色

Javafx 2 Javafx更改图表颜色,javafx-2,Javafx 2,我有一个表示颜色序列的颜色列表。我想将新的颜色序列应用于piechart数据 private final int CASPIAN_COLOR_COUNTS = 8; public void setPieChartColor(PieChart chart, List<String> colors) { chart.getData().get(i); // for debug to get the node name (.data) /** * S

我有一个表示颜色序列的颜色列表。我想将新的颜色序列应用于piechart数据

private final int CASPIAN_COLOR_COUNTS = 8;   
public void setPieChartColor(PieChart chart, List<String> colors) {

    chart.getData().get(i);   // for debug to get the node name (.data)

    /**
     * Set Pie color
     */
    int i = 0;
    for (String color : colors) {
        final Node node = chart.lookup(".data" + i);
        node.getStyleClass().remove("default-color" + (i % CASPIAN_COLOR_COUNTS));
        node.getStyleClass().add(color);
        i++;
    }
private final int CASPIAN_COLOR_COUNTS=8;
公共void setPieChartColor(PieChart图表,列表颜色){
chart.getData().get(i);//用于调试获取节点名(.data)
/**
*设置饼图颜色
*/
int i=0;
用于(字符串颜色:颜色){
最终节点=图表查找(“.data”+i);
node.getStyleClass().remove(“默认颜色”+(i%CASPIAN_color_COUNTS));
node.getStyleClass().add(颜色);
i++;
}

但是,所有图表数据都只从Caspian获取一种颜色。

您可以使用以下方法在代码中实现自定义饼图颜色:

private void applyCustomColorSequence(
    ObservableList<PieChart.Data> pieChartData, 
    String... pieColors) {
  int i = 0;
  for (PieChart.Data data : pieChartData) {
    data.getNode().setStyle(
      "-fx-pie-color: " + pieColors[i % pieColors.length] + ";"
    );
    i++;
  }
}
有关基于样式表的方法的示例:请参阅本教程的“设置饼图的颜色”部分

样式表方法的优点是样式与代码分离。缺点是颜色必须在创建样式表时设置,而不是在运行时设置,并且颜色序列限制为固定数量的颜色(8)


一般来说,大多数应用程序都建议使用样式表方法。

如果您的值为负值,css样式可能不起作用。这可能是一个错误,但我必须将我的值转换为正值才能使样式起作用。当值为负值时,所有的馅饼都是白色的。

我有一个包含颜色序列的颜色列表余弦。我想将我的新颜色序列应用于饼图数据。感谢您的努力,您的代码工作得很好,但当我使用鼠标事件向饼图添加工具提示时,当鼠标移动到图表上时,它会再次返回css颜色。我在鼠标事件中发现问题,样式设置为空
node.setStyle(“”)
,当我对其进行注释时,一切正常。当使用applyCustomColorSequence()函数时,切片的颜色会发生变化,但图例中的颜色不会更新,这意味着它们变得不一致。此外,我无法让css方法工作,在chart.setStyle()中指定css没有任何效果。如果您知道如何以一致的方式更改切片和图例的颜色,请给出一个示例。谢谢。您不能使用setStyle应用css选择器,您需要使用我提供的参考中定义的样式表。我提供的示例会隐藏图表图例,以便不显示其颜色预计起飞时间。
.default-color0.chart-pie { -fx-pie-color: #ffd700; }
.default-color1.chart-pie { -fx-pie-color: #ffa500; }
.default-color2.chart-pie { -fx-pie-color: #860061; }
.default-color3.chart-pie { -fx-pie-color: #adff2f; }
.default-color4.chart-pie { -fx-pie-color: #ff5700; }