1

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

}
4

1 に答える 1

0

見つかった回避策:

入れる

while(chart.getData().size() % 8 != 0){
    final XYChart.Series<Number,Number> series = new XYChart.Series<>();
    series.getData().add(new XYChart.Data<>(0,0));             
    chart.getData().add(series);
}

前にchart.getData().clear();

StackedAreaChart は、奇妙なことに、最初の 8 色を除いて、中断したところから番号付けを続けているようです。

于 2015-02-26T20:48:35.273 に答える