Вы можете использовать Canvas
для создания более быстрого просмотра:
public class WarehouseCanvasMap extends Pane {
private int xSpaces = 200;
private int ySpaces = 100;
private int cellSize = 10;
private int lineSize = 1;
private Canvas canvas;
public WarehouseCanvasMap() {
setWidth(xSpaces * cellSize);
setHeight(ySpaces * cellSize);
initGrid();
}
public void initGrid() {
canvas = new Canvas();
canvas.setWidth(getWidth());
canvas.setHeight(getHeight());
getChildren().add(canvas);
GraphicsContext graphic = canvas.getGraphicsContext2D();
graphic.setStroke(Color.GRAY);
graphic.setFill(Color.DARKGRAY);
graphic.setLineWidth(lineSize);
canvas.setOnMouseMoved(event -> {
graphic.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
graphic.fillRect(event.getX() - event.getX() % cellSize, event.getY() - event.getY() % cellSize, cellSize, cellSize);
for (int x = 0; x <= xSpaces; x++) {
graphic.strokeLine(x * cellSize, 0, x * cellSize, canvas.getHeight());
}
for (int y = 0; y <= xSpaces; y++) {
graphic.strokeLine(0, y * cellSize, canvas.getWidth(), y * cellSize);
}
});
}
}
Это решение выглядит так:
И выглядит быстрее, чем оригинал: