2013-01-02 68 views
1

我願與巴數值的頂部或在每個柱的身體處於BarChart增加值標籤,以條形圖的酒吧

我無論是在API和CSS參考指南中,但搜索添加標籤找不到任何選項來定義它。

JavaFX圖表的當前版本支持此功能嗎?

回答

1

我正在嘗試做同樣的事情。到目前爲止,這就是我所擁有的。

class CustomStackedBarChart extends StackedBarChart<String, Number> { 

    public CustomStackedBarChart(CategoryAxis xAxis, Axis<Number> yAxis) { 
     super(xAxis, yAxis); 

     setAnimated(false); 
     setLegendVisible(false); 
     setTitleSide(Side.TOP); 
     setTitle("SSPP Diurnal Symbol Rate"); 
     setMinHeight(500); 
     setMinWidth(1000); 
    } 

    @Override 
    protected void layoutPlotChildren() { 
     super.layoutPlotChildren(); 

     // Each individual Data element has its own bar. 
     // TODO add label to each bar. 
     for (Series<String, Number> series : getData()) { 
      for (Data<String, Number> data : series.getData()) { 
       StackPane bar = (StackPane) data.getNode(); 

       Label label = null; 

       for (Node node : bar.getChildrenUnmodifiable()) { 
        LOGGER.debug("Bar has child {}, {}.", node, 
         node.getClass()); 
        if (node instanceof Label) { 
         label = (Label) node; 
         break; 
        } 
       } 

       if (label == null) { 
        label = new Label(series.getName()); 
        label.setRotate(90.0); 
        bar.getChildren().add(label); 
       } 
       else { 
        label.setText(series.getName()); 
       } 
      } 
     } 
    } 
} 
2

如何:

import javafx.scene.chart.Axis; 
import javafx.scene.chart.CategoryAxis; 
import javafx.scene.chart.StackedBarChart; 
import javafx.scene.chart.XYChart.Data; 
import javafx.scene.chart.XYChart.Series; 
import javafx.scene.layout.StackPane; 
import javafx.scene.text.Text; 

class CustomStackedBarChart extends StackedBarChart<String, Number> { 

    public CustomStackedBarChart(CategoryAxis xAxis, Axis<Number> yAxis) { 
     super(xAxis, yAxis); 
    } 

    @Override 
    protected void layoutPlotChildren() { 
     super.layoutPlotChildren(); 

     for (Series<String, Number> series : getData()) { 
      for (Data<String, Number> data : series.getData()) { 
       StackPane bar = (StackPane) data.getNode(); 

       final Text dataText = new Text(data.getYValue() + ""); 
       bar.getChildren().add(dataText); 

      } 
     } 
    } 
} 
相關問題