在现有的 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