如何包装 javafx 图表图例的文本
How to wrap text of a javafx chart 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);
}
}
编辑:
请参阅突出显示的部分。仍然有些文字不可见。
您看过 CSS 文档了吗?
link 指的是图表图例部分:
JavaFX CSS Reference
如前所述,它是标签类型,所以我们也可以看看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 文件的末尾:et vóila - 它起作用了。
所以请再看一下,你的相应位置在你自己的 CSS。
我终于明白了。尝试在 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);
}
}
任何人都可以帮助我将文本包装在 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);
}
}
编辑: 请参阅突出显示的部分。仍然有些文字不可见。
您看过 CSS 文档了吗? link 指的是图表图例部分: JavaFX CSS Reference
如前所述,它是标签类型,所以我们也可以看看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 文件的末尾:et vóila - 它起作用了。
所以请再看一下,你的相应位置在你自己的 CSS。
我终于明白了。尝试在 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);
}
}