2015-05-05 111 views
1

我有StackPaneLineChart和每個LineChart可以有幾個系列。 使用方法getLegend()我只爲只有一個系列的圖表獲取圖例。我想獲得所有系列的傳奇,把它們放在底部。 代碼如下:JavaFX,LineChart從StackPane獲取所有圖例

public Node getLegend() { 
    HBox hbox = new HBox(); 

    final CheckBox baseChartCheckBox = new CheckBox(baseChart.getYAxis().getLabel()); 
    baseChartCheckBox.setSelected(true); 
    baseChartCheckBox.setDisable(true); 
    baseChartCheckBox.getStyleClass().add("readonly-checkbox"); 
    baseChartCheckBox.setOnAction(event -> baseChartCheckBox.setSelected(true)); 
    hbox.getChildren().add(baseChartCheckBox); 

    for (final LineChart lineChart : backCharts) { 
     CheckBox checkBox = new CheckBox(lineChart.getYAxis().getLabel()); 
     checkBox.setSelected(true); 
     checkBox.setOnAction(event -> { 
      if (backCharts.contains(lineChart)) { 
       backCharts.remove(lineChart); 
      } else { 
       backCharts.add(lineChart); 
      } 
     }); 
     hbox.getChildren().add(checkBox); 
    } 

    hbox.setAlignment(Pos.CENTER); 
    hbox.setSpacing(20); 
    hbox.setStyle("-fx-padding: 0 10 20 10"); 

    return hbox; 

回答

0

我決定:

ObservableList<LineChart> charts = backCharts; 
      for (LineChart linechart : charts) { 
       ObservableList<XYChart.Series> serieslists = linechart.getData(); 
       for (XYChart.Series list : serieslists) { 
        list.getName(); 
        } 
      }