2016-03-29 5 views
0

Kann mir bitte jemand helfen, den Text in eine Legende eines Javafx-Diagramms einzubinden. Ich habe Tortendiagramme und Balkendiagramme. Alle Legenden sind unten platziert. Ich habe Folgendes versucht, konnte es aber nicht funktionieren.Wie man den Text einer Javafx-Diagrammlegende einpackt

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); 
       } 
    } 

EDIT: Siehe den markierten Teil. Noch ist ein Text nicht sichtbar.

enter image description here

Antwort

1

Ich habe es endlich verstanden. Der Versuch, Text in CSS zu verpacken, funktionierte nicht, da die Etikettenbreite dort nicht kontrolliert werden konnte. So kann der folgende Code verwendet werden, um den Text programmgesteuert zu umbrechen.

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); 
       } 
    } 
0

Haben Sie einen Blick auf die CSS-Dokumentation? Dieser Link zu der Diagrammlegende Abschnitt beziehe: JavaFX CSS Reference

Wie bereits erwähnt, ist es von der Art Etikett, so können wir einen Blick here auch haben. -fx-wrap-text macht möglicherweise den Trick. Natürlich müssten Sie Ihre eigene CSS-Datei auf Ihrem Programm ...

Für ein ausführlicheres Beispiel schreiben und zu befestigen, finden Sie in Ihrem JDKs jfxrt.jar, entpacken und suchen Sie nach dem modena.css, die die Standard-CSS-Datei .

Grüße. Daniel

bearbeiten: Ich habe die snipped folgende tatsächlich einen Einfluss auf oder Anwendung, nachdem alle:

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

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

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

Aber es ist wichtig, wo Sie es in Ihrem CSS platzieren. Bei meinem ersten Versuch platzierte ich es über die CSS-Regel, die die Standard-Label-Textfarbe festlegen. Als ich das bemerkte, legte ich es am Ende meiner CSS-Datei: et vóila - es hat funktioniert.

Also bitte einen zweiten Blick darauf, dass Sie das entsprechend in Ihrem eigenen CSS platziert haben.

+0

Ich versuchte '-fx-Wrap-Text' in der CSS. '.pie-legende-symbol {-fx-wrap-text: true;}'. Es funktioniert nicht für mich –

+0

Soweit ich verstehe, sollte die Dokumentation '.pie-legende-symbol' nur der Grafikknoten sein (sonst wäre die Benennung irreführend). Haben Sie '.chart-legend-item' für das Legenden-Label selbst ausprobiert? Ich denke, Sie müssten entweder Ihren Code oben auf das "Element" aktualisieren oder versuchen Sie es mit einer separaten CSS-Datei ... – dzim

+0

Ich habe nur eine relativ komplexe Anwendung, um es zu testen, wo andere Faktoren stören könnten meine Änderungen. Wenn ich die Legende zu Zeilen aus diesem älteren JavaFX2-Tutorial hinzufüge, funktioniert es auch nicht für mich: http://docs.oracle.com/javafx/2/charts/css-styles.htm - in diesem Fall I Ich muss zugeben, ohne weitere Tests auf meiner Seite bin ich auch ein bisschen verloren. Tut mir leid Kumpel! – dzim