StackedAreaChart
データがまったく新しいデータに置き換えられたときに、アプリケーションで一貫してシリーズに色を付けるために、そのシリーズの色を理解しようとしています。最初は、StackedAreaChart
デフォルトの 8 色が循環すると考えていました。つまり、データ シリーズは、mod 8 のインデックスに従って色付けされgetData()
ます。しかし、予期しない動作に遭遇しています。
上記の出力はStackedAreaChart
、ウィンドウがクリックされるたびに のデータを消去し、10 個の新しい系列を再入力する以下のアプリケーションからのものです。ご覧のとおり、最初の 8 色のみがクリック/再移植で一貫しています。
public class TestChartColors extends Application {
private int clickCount = 0;
@Override
public void start(Stage primaryStage) {
NumberAxis xAxis = new NumberAxis(0, 10, 1);
NumberAxis yAxis = new NumberAxis(0, 10, 1);
final StackedAreaChart<Number,Number> chart = new StackedAreaChart<>(xAxis,yAxis);
chart.setLegendVisible(false);
chart.setCreateSymbols(false);
chart.setAnimated(false);
chart.setOnMouseClicked((MouseEvent event) -> {
clickCount++;
chart.getData().clear();
for(int i=0; i<10; i++){
chart.getData().add(flatSeries());
}
primaryStage.setTitle("After " + clickCount + " clicks.");
});
StackPane root = new StackPane();
root.getChildren().add(chart);
Scene scene = new Scene(root, 300, 250);
primaryStage.setScene(scene);
primaryStage.setTitle("Click the window.");
primaryStage.show();
}
private Series<Number,Number> flatSeries(){
Series<Number,Number> s = new Series<>();
ObservableList<XYChart.Data<Number, Number>> d = s.getData();
d.add(new XYChart.Data<>(0, 1));
d.add(new XYChart.Data<>(10, 1));
return s;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}