Загрузка данных


package com.example.demo;

import javafx.animation.*;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.SVGPath;
import javafx.util.Duration;

public class HelloController {
    @FXML private TextField display;
    @FXML private VBox mainContainer;

    private double firstNumber = 0;
    private String operator = "";
    private boolean start = true;

    @FXML
    protected void onDigitClick(ActionEvent event) {
        if (start) {
            display.setText("");
            start = false;
        }
        String value = ((Button)event.getSource()).getText();
        display.setText(display.getText() + value);

        if (display.getText().equals("0092")) {
            showLoveAnimation();
        }
    }

    private void showLoveAnimation() {
        StackPane overlay = new StackPane();
        overlay.setStyle("-fx-background-color: rgba(44, 62, 80, 0.9); -fx-background-radius: 10;");
        overlay.setPrefSize(mainContainer.getWidth(), mainContainer.getHeight());

        SVGPath heart = new SVGPath();
        heart.setContent("M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z");
        heart.setFill(Color.web("#e74c3c"));
        heart.setScaleX(6);
        heart.setScaleY(6);

        Label label = new Label("Я люблю тебя, Юля!");
        label.setStyle("-fx-text-fill: white; -fx-font-size: 22px; -fx-font-weight: bold;");
        label.setTranslateY(100);

        overlay.getChildren().addAll(heart, label);
        ((Pane) mainContainer.getScene().getRoot()).getChildren().add(overlay);

        ScaleTransition pulse = new ScaleTransition(Duration.seconds(0.5), heart);
        pulse.setByX(1.2); pulse.setByY(1.2); pulse.setCycleCount(8); pulse.setAutoReverse(true);

        FadeTransition fadeOut = new FadeTransition(Duration.seconds(1), overlay);
        fadeOut.setFromValue(1); fadeOut.setToValue(0); fadeOut.setDelay(Duration.seconds(4));
        fadeOut.setOnFinished(e -> {
            ((Pane) mainContainer.getScene().getRoot()).getChildren().remove(overlay);
            display.setText("");
        });

        pulse.play();
        fadeOut.play();
    }

    @FXML
    protected void onOperatorClick(ActionEvent event) {
        operator = ((Button)event.getSource()).getText();
        firstNumber = Double.parseDouble(display.getText());
        start = true;
    }

    @FXML
    protected void onClearClick() {
        display.setText("");
        start = true;
    }

    @FXML
    protected void onResultClick() {
        double secondNumber = Double.parseDouble(display.getText());
        switch (operator) {
            case "+": display.setText(String.valueOf(firstNumber + secondNumber)); break;
            case "-": display.setText(String.valueOf(firstNumber - secondNumber)); break;
            case "*": display.setText(String.valueOf(firstNumber * secondNumber)); break;
            case "/": display.setText(String.valueOf(firstNumber / secondNumber)); break;
        }
        start = true;
    }
}