有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何向JavaFX图表添加辅助图例?

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

val newLegend = MyLegend()
newLegend.isVertical=true

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

传奇是层叠的(这并不奇怪),但至少我知道我可以渲染它: enter image description here

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

legend.getParent().addChildIfPossible( newLegend)

但这会将左上角的附加节点错误地渲染为一些点 enter image description here

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

完整的示例源代码可以在here中找到


共 (1) 个答案

  1. # 1 楼答案

    类为.chart-legend的节点实际上是com.sun.javafx.charts.Legend,它反过来扩展了TilePane。如果您不想处理TilePane的布局约束,只需清除它的子项,并在其中添加您想要的任何布局容器。在本例中,我添加了一个VBox和三个标签:

    with (lookupAll(".chart-legend").first()) {
        getChildList()?.clear()
        vbox {
            label("Line 1")
            label("Line 2")
            label("Line 3")
        }
    }
    
    <> P>因为很明显,图表并不能真正为您提供一个方便的方法来操纵这个传说,您可以考虑为图表创建自己的皮肤作为一个更稳定的解决方案。这样,您可以精确控制图例的显示位置