2015-05-05 2 views
1

У меня есть StackPane с LineChart и каждый 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(); 
        } 
      } 
Смежные вопросы