任何人都可以帮我把文字包装在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);
}
}
修改 请参阅突出显示的部分还有一些文字不可见。
答案 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中。