我需要创建一个图表,其中每个节点都由一种颜色表示。这就是我所做的:
final StackPane chartContainer = new StackPane();
Tube tube = tubeTest();
Random r = new Random();
XYChart.Series<Number,Number> serie = new XYChart.Series<Number,Number>();
for(int numSequence = 1; numSequence < 21; numSequence++)
{
for(int distance = 0; distance < 200; ++distance)
{
Color color = Color.hsb(r.nextInt(255), 1, 1);
Data<Number, Number> data = new XYChart.Data<Number,Number>(distance, numSequence);
Rectangle rectangle = new Rectangle(2,15, color);
data.setNode(new Rectangle(2,15, color));
serie.getData().add(data);
}
}
final NumberAxis xAxis = new NumberAxis();
final NumberAxis yAxis = new NumberAxis();
xAxis.setLabel("Balayage (mm)");
yAxis.setLabel("Numéro de séquence");
LineChart<Number, Number> chart = new LineChart<Number, Number>(xAxis, yAxis);
chart.setData(FXCollections.observableArrayList(Collections.singleton(serie)));
Set<Node> node = chart.lookupAll(".chart-series-line");
node.forEach((element) -> {
element.setStyle("-fx-stroke-width : 0px;");
});
chart.prefHeightProperty().bind(chartContainer.heightProperty());
chart.prefWidthProperty().bind(chartContainer.widthProperty());
chartContainer.getChildren().add(chart);
//chartContainer.getChildren().add(rectanglePixel);
final BorderPane root = new BorderPane();
root.setCenter(chartContainer);
final Scene scene = new Scene(root, 600, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
//Convertit la valeur d'un point en sa couleur hsv
private Color hsvColorValue(double value) {
double AMPLITUDE_MAX = 50;
//h = (valeur / max)*255
double h = (value/AMPLITUDE_MAX)*255;
//On s'assure que h est entre 0 et 255 - sinon erreur
h = Math.max(0, Math.min(255, h));
//On obtient la couleur hsv du point sur le scan
return Color.hsb(h, 1, 1);
}
尽管如此,当图表具有其创建比例时,它可以很好地工作,但是当我想要扩展框架时,由矩形表示的节点也不会扩展,因此它在节点之间创建了空白。我是否应该以其他方式(例如通过创建图像)进行操作?还是有办法做到?