0

添加自定义节点(在我的情况下是 JavaFX 图表的另一个图例)时

val newLegend = MyLegend()
newLegend.isVertical=true

val legend = lookupAll(".chart-legend").first()

传说是级联的(并不奇怪),但至少我知道我可以渲染它: 在此处输入图像描述

因此,为了正确地将它们一个接一个地垂直对齐,我尝试将其添加到父级:

legend.getParent().addChildIfPossible( newLegend)

但这会使左上角的附加节点错误地呈现为一些点 在此处输入图像描述

我究竟做错了什么?我可以以更聪明的方式访问第一个图例的父容器吗?

完整的示例来源可以在这里找到

4

1 回答 1

2

具有类的 Node.chart-legend实际上是 a com.sun.javafx.charts.Legend,而后者又是 extends TilePane。如果您不想处理 的布局约束TilePane,只需清除其中的子项,然后在其中添加您想要的任何布局容器。在这个例子中,我添加了一个VBox和三个标签:

with (lookupAll(".chart-legend").first()) {
    getChildList()?.clear()
    vbox {
        label("Line 1")
        label("Line 2")
        label("Line 3")
    }
}

由于很明显图表并没有真正为您提供操作图例的便捷方式,您可以考虑为图表创建自己的皮肤作为更稳定的解决方案。这样您就可以准确控制图例的显示位置。

于 2017-11-17T19:42:12.313 回答