@Override protected void initGraphics() {
        super.initGraphics();

        if (tile.isAutoScale()) tile.calcAutoScale();
        minValue             = tile.getMinValue();
        range                = tile.getRange();
        angleStep            = ANGLE_RANGE / range;
        sectionsVisible      = tile.getSectionsVisible();
        sections             = tile.getSections();
        formatString         = new StringBuilder("%.").append(Integer.toString(tile.getDecimals())).append("f").toString();
        locale               = tile.getLocale();
        currentValueListener = o -> setBar(tile.getCurrentValue());

        graphicListener      = (o, ov, nv) -> { if (nv != null) { graphicContainer.getChildren().setAll(tile.getGraphic()); }};

        titleText = new Text();
        titleText.setFill(tile.getTitleColor());
        enableNode(titleText, !tile.getTitle().isEmpty());

        text = new Text(tile.getText());
        text.setFill(tile.getTextColor());
        enableNode(text, tile.isTextVisible());

        barBackground = new Arc(PREFERRED_WIDTH * 0.5, PREFERRED_HEIGHT * 0.5, PREFERRED_WIDTH * 0.468, PREFERRED_HEIGHT * 0.468, 90, 360);
        barBackground.setType(ArcType.OPEN);
        barBackground.setStroke(tile.getBarBackgroundColor());
        barBackground.setStrokeWidth(PREFERRED_WIDTH * 0.1);
        barBackground.setStrokeLineCap(StrokeLineCap.BUTT);
        barBackground.setFill(null);

        bar = new Arc(PREFERRED_WIDTH * 0.5, PREFERRED_HEIGHT * 0.5, PREFERRED_WIDTH * 0.468, PREFERRED_HEIGHT * 0.468, 90, 0);
        bar.setType(ArcType.OPEN);
        bar.setStroke(tile.getBarColor());
        bar.setStrokeWidth(PREFERRED_WIDTH * 0.1);
        bar.setStrokeLineCap(StrokeLineCap.BUTT);
        bar.setFill(null);

        separator = new Line(PREFERRED_WIDTH * 0.5, 1, PREFERRED_WIDTH * 0.5, 0.16667 * PREFERRED_HEIGHT);
        separator.setStroke(tile.getBackgroundColor());
        separator.setFill(Color.TRANSPARENT);

        centerValueText = new Text(String.format(locale, formatString, tile.getCurrentValue()));
        centerValueText.setFont(Fonts.latoRegular(PREFERRED_WIDTH * 0.27333));
        centerValueText.setFill(tile.getValueColor());
        centerValueText.setTextOrigin(VPos.CENTER);

        centerUnitText = new Text(tile.getUnit());
        centerUnitText.setFont(Fonts.latoLight(PREFERRED_WIDTH * 0.08));
        centerUnitText.setFill(tile.getUnitColor());

        centerTextFlow = new TextFlow(centerValueText, centerUnitText);
        centerTextFlow.setTextAlignment(TextAlignment.CENTER);

        smallValueText = new Text(String.format(locale, formatString, tile.getCurrentValue()));
        smallValueText.setFont(Fonts.latoRegular(PREFERRED_WIDTH * 0.27333));
        smallValueText.setFill(tile.getValueColor());
        smallValueText.setTextOrigin(VPos.CENTER);
        enableNode(smallValueText, tile.isValueVisible());

        smallUnitText = new Text(tile.getUnit());
        smallUnitText = new Text(Helper.PERCENTAGE);
        smallUnitText.setFont(Fonts.latoLight(PREFERRED_WIDTH * 0.08));
        smallUnitText.setFill(tile.getUnitColor());
        enableNode(smallUnitText, !tile.getUnit().isEmpty());

        smallTextFlow = new TextFlow(smallValueText, smallUnitText);
        smallTextFlow.setTextAlignment(TextAlignment.CENTER);

        graphicContainer = new StackPane();
        graphicContainer.setMinSize(size * 0.9, tile.isTextVisible() ? size * 0.72 : size * 0.795);
        graphicContainer.setMaxSize(size * 0.9, tile.isTextVisible() ? size * 0.72 : size * 0.795);
        graphicContainer.setPrefSize(size * 0.9, tile.isTextVisible() ? size * 0.72 : size * 0.795);
        if (null == tile.getGraphic()) {
            enableNode(graphicContainer, false);
        } else {
            graphicContainer.getChildren().setAll(tile.getGraphic());
        }

        getPane().getChildren().addAll(barBackground, bar, separator, titleText, text, graphicContainer, smallTextFlow, centerTextFlow);
    }
Adopted from CircularProgressTileSkin originally Created by hansolo on 03.03.17.
Modified by Wolf Runnermann on 22.11.2022
src/main/java/eu/hansolo/tilesfx/skins/CircleProgressTileNumberSkin.java