4

色のシーケンスを表す色のリストがあります。新しいカラーシーケンスを円グラフデータに適用したいと思います。

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

ただし、すべてのグラフデータは、カスピ海の色から1色のみを取得します。

4

2 に答える 2

11

次のような方法を使用して、コードでカスタムパイカラーを実現できます。

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ます)。

これを使用するサンプルコードを次に示します。

Coloredpiechart


cssスタイルシートを使用して同じ効果を達成できます。

たとえば、次のスタイル定義を含む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; }

スタイルシートベースのアプローチの例については、CSSチュートリアルを使用したスタイリングチャートの「円グラフの色の設定」セクションを参照してください。

スタイルシートのアプローチには、スタイルがコードから分離されているという利点があります。実行時ではなくスタイルシートの作成時に色を設定する必要があり、色の順序が固定数の色に制限されるという欠点があります(8)。

一般に、ほとんどのアプリケーションではスタイルシートアプローチが推奨されます。

于 2013-03-06T00:06:40.490 に答える
0

値が負の場合、cssスタイルが機能しない可能性があります。これはバグかもしれませんが、スタイルを機能させるには、値を正の値に変換する必要がありました。値が負の場合、すべてのパイの色は白でした。

于 2019-09-04T09:26:51.247 に答える