当我在现有的PieChart上设置新数据时,我注意到颜色不同。 (它们沿着CSS颜色列表循环,好像某些内部计数器没有被重置)
我如何重新从颜色0开始,而不必每次都重新创建图表?
示例:
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.stage.Stage;
public class ChartAdvancedPie extends Application {
PieChart pc = new PieChart();
private void init(Stage primaryStage) {
Group root = new Group();
primaryStage.setScene(new Scene(root));
root.getChildren().add(pc);
pc.setAnimated(false);
SetupData( );
SetupData( ); //comment this out to see first colours only
}
protected void SetupData() {
ObservableList<PieChart.Data> data = FXCollections.observableArrayList();
data.add(new PieChart.Data("Slice", 1));
data.add(new PieChart.Data("Slice", 2));
data.add(new PieChart.Data("Slice", 3));
pc.getData().clear();
pc.setData( data );
}
@Override public void start(Stage primaryStage) throws Exception {
init(primaryStage);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
一种保留颜色顺序的方法是在清除前添加 8-size mod 8 个项目,但我相信有更简单的方法(或者我的数据添加方式不正确)
int rem = 8-(pieChartData.size() % 8 );
for ( int i=0; i< rem; i++ ) {
controller.FeatureChart.getData().add(new PieChart.Data("dummy", 1));
}
controller.FeatureChart.getData().clear();
//... add items again