2013-03-05 3 views
2

У меня есть список цветов, представляющих последовательность цветов. Я хочу применить новую последовательность цветов к данным piechart.Javafx change PieChart color

private final int CASPIAN_COLOR_COUNTS = 8; 
public void setPieChartColor(PieChart chart, List<String> colors) { 

    chart.getData().get(i); // for debug to get the node name (.data) 

    /** 
    * Set Pie color 
    */ 
    int i = 0; 
    for (String color : colors) { 
     final Node node = chart.lookup(".data" + i); 
     node.getStyleClass().remove("default-color" + (i % CASPIAN_COLOR_COUNTS)); 
     node.getStyleClass().add(color); 
     i++; 
    } 

, но все данные диаграммы принимают только один цвет из каспийского цвета.

+0

У меня есть список цветов, который содержит последовательность цветов. Я хочу применить новую последовательность цветов к файлам piechart. –

ответ

5

Вы можете достичь заказ пирогов цвета в коде, используя такой метод, как:

private void applyCustomColorSequence(
    ObservableList<PieChart.Data> pieChartData, 
    String... pieColors) { 
    int i = 0; 
    for (PieChart.Data data : pieChartData) { 
    data.getNode().setStyle(
     "-fx-pie-color: " + pieColors[i % pieColors.length] + ";" 
    ); 
    i++; 
    } 
} 

Обратите внимание, что метод должен быть применен после того, как график был показан на активной сцене (в противном случае data.getNode() вызов возвратит null).

Это sample code который использует его.

coloredpiechart


Вы можете добиться того же эффекта с помощью css stylesheets.

Например, таблица стилей css, содержащая следующие определения стилей, изменит цвета по умолчанию круговой диаграммы, когда таблица стилей применяется к данной диаграмме.

.default-color0.chart-pie { -fx-pie-color: #ffd700; } 
.default-color1.chart-pie { -fx-pie-color: #ffa500; } 
.default-color2.chart-pie { -fx-pie-color: #860061; } 
.default-color3.chart-pie { -fx-pie-color: #adff2f; } 
.default-color4.chart-pie { -fx-pie-color: #ff5700; } 

В качестве примера подхода, основанного на таблице стилей: см «Установка Цвета круговой диаграммы» части Styling Charts with CSS учебника.

Подход к таблице стилей имеет то преимущество, что стили отделены от кода. Недостаток заключается в том, что в цветах должно быть задано время создания таблицы стилей, а не во время выполнения, а последовательность цветов ограничена фиксированным количеством цветов (8).

В целом, подход к таблицам стилей рекомендуется для большинства приложений.

+0

Спасибо за ваши усилия, ваш код работает хорошо, но когда я добавляю всплывающую подсказку в круговую диаграмму с событием мыши и по мере перемещения мыши по графику, он снова возвращает обратно цвета css. –

+0

Я нашел проблему в событии мыши, когда стиль был пуст 'node.setStyle (" ")', когда я прокомментировал все, что нужно. –

+2

При использовании функции applyCustomColorSequence() цвета срезов изменяются, однако цвета в легенде не обновляются, что означает, что они становятся непоследовательными. – bjdodo