【发布时间】:2018-07-10 11:26:07
【问题描述】:
我目前正在编写一个具有 LineChart 的程序,并且在 this question. 的帮助下有条件地为它的背景着色
如您所见,颜色永远不会“清除”。这是我绘制多边形和折线图的代码:
private void createTabWithChart(String searchedValue) throws Exception {
final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
ObservableList<Data<String, Number>> chartData = createChart(searchedValue);
if (chartData != null) {
ObservableList<Data<String, Number>> list = FXCollections.observableArrayList();
Data<String, Number> data;
for (int i=0; i < dataArray.size(); ++i) {
data = new Data<>(date.get(i), 0);
list.add(data);
}
Series limit = new XYChart.Series(list);
limit.setName("Limit");
LineChart<String, Number> lineChart = new LineChart<String, Number>(xAxis, yAxis, FXCollections.observableArrayList() )
{
protected void layoutPlotChildren() {
super.layoutPlotChildren();
double y1;
double y2;
for (int i = 0; i < list.size() - 1; i++) {
double x1 = 0;
double x2 = 100000; // an absurdly large number!
y1 = getYAxis().getDisplayPosition(yAxis.getUpperBound());
y2 = getYAxis().getDisplayPosition(yAxis.getUpperBound());
Polygon polygon = new Polygon();
polygon.getPoints().addAll(new Double[] {
x1, y1,
x1, getYAxis().getDisplayPosition(list.get(i).getYValue()),
x2, getYAxis().getDisplayPosition(list.get((i + 1)).getYValue()),
x2, y2 });
getPlotChildren().add(polygon);
polygon.toBack();
polygon.getStyleClass().add("polygon");
}
}
};
Series series = new XYChart.Series(chartData);
series.setName(searchedValue);
limit.setName("Limit");
lineChart.getData().addAll(series, limit);
lineChart.setLegendVisible(false);
lineChart.setTitle(searchedValue);
Tab tab = new Tab();
tab.setText(searchedValue);
tabPane.getTabs().add(tab);
tabPane.setTabClosingPolicy(TabClosingPolicy.UNAVAILABLE);
tab.setContent(lineChart);
}
}
(代码被清除了一点,我已经排除了一些我认为不相关的东西)
【问题讨论】: