如何包装javafx图表图例

时间:2016-03-29 06:17:53

标签: javafx charts legend

任何人都可以帮我把文字包装在javafx图表的图例中。我有饼图和条形图。所有的传说都放在底部。我尝试了以下但无法使其正常工作。

    for (Node node : pie.lookupAll(".chart-legend")) {
                if (node instanceof Text) {
                    System.out.println("Text instance");
                    ((Text) node).setWrappingWidth(380);
                    ((Text) node).setManaged(true);
                }
                if (node instanceof Label) {
                    System.out.println("Label instance");
                    ((Label) node).setWrapText(true);
                    ((Label) node).setManaged(true);
                    ((Label) node).setPrefWidth(380);
                }
  }

修改 请参阅突出显示的部分还有一些文字不可见。

enter image description here

2 个答案:

答案 0 :(得分:2)

我终于明白了。试图在css中包装文本没有工作,因为标签宽度无法在那里控制。因此,可以使用以下代码以编程方式包装文本。

for (Node node : pie.lookupAll(".chart-legend-item")) {
                if (node instanceof Label) {
                    System.out.println("Label instance");
                    ((Label) node).setWrapText(true);
                    ((Label) node).setManaged(true);
                    ((Label) node).setPrefWidth(380);
                }
  }

答案 1 :(得分:0)

您是否看过CSS文档? 此链接参考图表图例部分: JavaFX CSS Reference

如前所述,它属于Label类型,因此我们也可以查看here-fx-wrap-text可能会成功。当然,您需要编写并将自己的CSS文件附加到您的程序中......

有关更详细的示例,请参阅您的JDK jfxrt.jar,解压缩并查找modena.css,这是默认的CSS文件。

的问候。 丹尼尔

编辑 :我得到了以下剪辑,实际上对游戏或应用程序产生了影响:

.chart-legend {
   -fx-background-color:  transparent;
   -fx-padding: 20px;
}

.chart-legend-item-symbol {
   -fx-background-radius: 0;
}

.chart-legend-item {
    -fx-text-fill: #191970;
}

但重要的是,将它放在CSS中。在我的第一次尝试中,我将置于 CSS规则之上,该规则设置了默认的标签文本颜色。 当我注意到这一点时,我把它放在我的CSS文件的末尾:etvóila - 它工作了。

所以请再看一下,相应地放在你自己的CSS中。