在此基础上answer,基于R,G,B创建一个内联样式参数(假设这些都是整数,从0到255),你只需要重写CHART_COLOR_1
(最多CHART_COLOR_8
)值来修改线条颜色和CHART_COLOR_1_TRANS_20
(最多CHART_COLOR_8_TRANS_20
)修改区域的颜色:
private AreaChart<String, Number> areaChart;
private void changeColor(int redColor, int greenColor, int blueColor, double opacity){
/* int redColor=0, greenColor=127, blueColor=195;
double opacity=0.4;
*/
areaChart.setStyle("CHART_COLOR_1: rgb("+redColor+","+greenColor+","+blueColor+");" +
"CHART_COLOR_1_TRANS_20: rgba("+redColor+","+greenColor+","+blueColor+");");
}
编辑
我加入这个短MVCE为清楚起见:
@Override
public void start(Stage primaryStage) {
AreaChart<String, Number> areaChart=new AreaChart<>(new CategoryAxis(),new NumberAxis());
ObservableList<XYChart.Data<String,Integer>> xyList
= FXCollections.observableArrayList(
new XYChart.Data<>("P1", 30),
new XYChart.Data<>("P2", 40),
new XYChart.Data<>("P3", 30));
XYChart.Series series = new XYChart.Series(xyList);
areaChart.getData().addAll(series);
Button button = new Button("Change style");
button.setOnAction(e->{
int redColor=0, greenColor=127, blueColor=195;
double opacity=0.3;
areaChart.setStyle("CHART_COLOR_1: rgb("+redColor+","+greenColor+","+blueColor+"); "
+ "CHART_COLOR_1_TRANS_20: rgba("+redColor+","+greenColor+","+blueColor+","+opacity+");");
});
VBox root = new VBox(5, button, areaChart);
Scene scene = new Scene(root, 400, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
这将是结果:
你想创建基于三个参数(r,g,b)的颜色?这与数据参数有什么关系?应用颜色(填充,背景,文字,...)在哪里? – 2014-11-04 09:52:47
@JoséPereda颜色需要用颜色填充线条。我在问题中添加了一个Sample-Picture! – 2014-11-04 10:18:00
好的,你说的是数据(每个x,y点),而不是系列...... – 2014-11-04 10:22:15