2

このコードで凡例アイテムのセットカラーを設定できることを知っています:

for (Node n : chart.lookupAll(".bar-legend-symbol.default-color0")) { n.setStyle("-fx-background-color: " + "red"+ ";"); }

ただし、最初にデータをチャートに追加し、次にチャートをシーンに追加した場合にのみ機能します。このような:

final XYChart.Series<String, Number> series = new XYChart.Series<String, Number>();
XYChart.Data<String, Number>bar = new XYChart.Data<String, Number>("test", 120);
series.getData().add(bar);

chart.getData().add(series);

chartFxPanel.setScene(new Scene(chart));

for (Node n : chart.lookupAll(".bar-legend-symbol.default-color0")) {
    n.setStyle("-fx-background-color: " + "red"+ ";");
   }

ただし、チャートがシーンに追加された後、データをチャートに追加したいと思います。これを行っても、凡例アイテムの色は変更されません。

final XYChart.Series<String, Number> series = new XYChart.Series<String, Number>();
XYChart.Data<String, Number>bar = new XYChart.Data<String, Number>("test", 120);
series.getData().add(bar);


chartFxPanel.setScene(new Scene(chart));
chart.getData().add(series);


for (Node n : chart.lookupAll(".bar-legend-symbol.default-color0")) {
    n.setStyle("-fx-background-color: " + "red"+ ";");
   }

凡例アイテムの色を変更するにはどうすればよいですか?

4

1 に答える 1

2

ルックアップ/setStyleコードをPlatform.runLater呼び出しでラップすると、おそらく機能します(または、最悪の場合、この例のようなタイムラインを使用して遅延させます)。これらの構成により、JavaFXシステムは、次のパルスでデータ項目の変更を処理およびスタイル設定できるため、後でオーバーライドできます。

Javaコードルックアップを使用するのではなく、cssスタイルシートを使用してスタイルをカスタマイズできない理由は何ですか?つまり、JavaFXチャートスタイリングガイドで概説されているのと同様の手法を使用します。そうすれば、ルックアップタイミングに関連する問題に対処する必要がなくなります。これは望ましいと思われます。

于 2013-01-23T10:49:41.723 に答える