【发布时间】:2015-04-23 21:50:26
【问题描述】:
我最近一直在深入研究 JavaFX 中图表的实现,并注意到在 BarChart.java 中,StackPanes 用于各个条形图,如下所示:
bar = new StackPane();
item.setNode(bar);
bar.getStyleClass().addAll("chart-bar", "series" + seriesIndex, "data" + itemIndex);
稍后(layoutPlotChildren(...)):
bar.resizeRelocate(xPos, bottom, barWidth, top - bottom);
在我看来,更合乎逻辑的选择是使用矩形,特别是因为 JavaFX Peformance Tips and Tricks 声明使用形状类(即使它们必须重新创建,因为它们不能直接调整大小比使用更快区域/窗格)。
我问这个问题的主要原因是因为我有一个自定义图表实现(烛台图),它使用矩形作为蜡烛,并且我希望以相同的方式设置条形。为 Rectangle 创建样式类使用不同的 CSS 属性(-fx-fill、-fx-smooth、-fx-stroke 等),而 Region/Pane 使用 -fx-background-color、-fx-border-color,甚至没有指定的选项-fx-smooth 所以我不能为蜡烛和酒吧使用一个主要样式类。
BarChart 使用 StackPane 的事实给我留下了几个问题:
- 为什么?是因为一些我不明白的奇怪的性能原因吗?
- 选择是任意的吗?另一个大致相同但使用矩形的实现是否也一样好?
- BarChart 中条形图的颜色是用
-fx-bar-fill属性指定的(在JavaFX CSS Reference Guide 中没有记录),但此外,我在 OpenJFX 源中找不到指定和查找此属性的任何地方,如何这真的有效吗? - 在 Ensemble8 Candle.java 中的 CandleStickChart 实现中,各个蜡烛(非常类似于 BarChart 的条)实际上是包含灯芯线和蜡烛本身的区域的组。这与我个人的实现不同,也与 BarChart 实现不同 - 再次,这种选择是任意的,还是有充分的理由使用这些类而不是 2 个矩形或一个矩形和 1 条线,比如说。
【问题讨论】:
标签: java charts javafx javafx-8