Charts 如何在JavaFX2.0折线图中动态更改线条样式?

Charts 如何在JavaFX2.0折线图中动态更改线条样式?,charts,javafx,Charts,Javafx,在JavaFX项目中,我们需要一个折线图。我可以使用CSS轻松设置整个图表和系列的样式,但图表的内容可以动态更改: 序列号及其显示顺序取决于用户操作和his数据。每个系列代表一个具体的数据类别,每个类别都有自己的样式,例如,类别a显示为虚线,类别B显示为虚线。对于每个类别,图表可以包含0个或多个系列 序列的样式也取决于数据值,例如,平均值上的序列线为红色,下面为蓝色 如何在JavaFX中实现这一点 序列号及其显示顺序取决于用户操作和his数据 通过更改传递给图表调用的系列的数量,可以修改显示的系

在JavaFX项目中,我们需要一个折线图。我可以使用CSS轻松设置整个图表和系列的样式,但图表的内容可以动态更改:

  • 序列号及其显示顺序取决于用户操作和his数据。每个系列代表一个具体的数据类别,每个类别都有自己的样式,例如,类别a显示为虚线,类别B显示为虚线。对于每个类别,图表可以包含0个或多个系列

  • 序列的样式也取决于数据值,例如,平均值上的序列线为红色,下面为蓝色

  • 如何在JavaFX中实现这一点

  • 序列号及其显示顺序取决于用户操作和his数据 通过更改传递给图表调用的系列的数量,可以修改显示的系列数量和显示顺序。当图表侦听列表的更改时,当支持列表更改时,图表将自动更新以反映更改

    每个类别都有自己的风格,例如,类别A显示为虚线,类别B显示为虚线

    通过确定图表中的哪个系列属于哪个类别,通过节点函数查找与该系列相关的所有节点,并对与该类别的样式匹配的系列应用新的自定义样式,可以实现这一点。通过设置
    -fx stroke dash array
    css属性,可以通过css设置虚线和虚线的样式。或者,您可以通过修改从返回的ObservableList动态更改分配给节点的css样式类,而不是查找

    序列的样式也取决于数据值,例如,平均值上的序列线为红色,下面为蓝色

    这类似于虚线和虚线的显示方式,但线的颜色由
    -fx stroke
    css属性修改,修改取决于为序列计算的平均值


    为了演示以上几点,我在这里为这个问题创建了一个示例解决方案:

    我这样做,认为它非常方便。注意:这显然适用于折线图,但不适用于散点图

     Series<Number, Number> series = new Series<>();
     ...
     series.nodeProperty().get().setStyle("-fx-stroke-width: 1px;");
    
    Series系列=新系列();
    ...
    series.nodeProperty().get().setStyle(“-fx笔划宽度:1px;”);
    
    非常感谢!这个例子很好,也很有用。有没有办法像其他图表一样把圆变成三角形或立方体?例如在这个组件中:@Hamed_gibago问一个新问题。我真不敢相信没有办法。这是一个如此可怕的设计缺陷。如果舞台不上映,这将抛出一个NPE。小心。不仅舞台应该被展示出来,而且看起来这个系列一定已经被添加到线条图中了。顺便说一句,当然散射图不会有这个属性,因为它应该是分散的!setStyle不在方法中。您使用的是哪个版本?我发现我应该使用series,而不是仅使用series