Что означает ошибка "javafx.scene.CssStyleHelper вычисленияValue"? - PullRequest
2 голосов
/ 10 июня 2019

Для школьного задания мы должны запрограммировать маленькую игру со змеями. Все работает нормально, но время от времени экран конца игры не отображается и выдает эту ошибку:

09 июня 2019 г. 23:25:27 javafx.scene.CssStyleHelper CalculateValue ВНИМАНИЕ: Не удалось разрешить '-fx-text-background-color' при разрешении поиска для '-fx-text-fill' из правила '* .label' в таблице стилей jrt: /javafx.controls/com/sun/javafx/scene /control/skin/modena/modena.bss

Это кажется мне странным, поскольку Он не делает это постоянно, просто время от времени. У меня вопрос, что означает эта ошибка и, возможно, как ее исправить. Я не могу показать код, так как моя школа довольно строго относится к распределению заданий, но я надеюсь, что этой информации будет достаточно, чтобы хотя бы сообщить мне, в чем причина этой ошибки.

Я добавил несколько примеров ниже, возможно, он не сможет дать точную репликацию, но он дает некоторые идеи относительно того, что я делаю.

Другой полезной информацией может быть то, что DrawPane постоянно обновляется с помощью AnimationTimer.

import controller.Controller;
import javafx.geometry.Pos;
import javafx.scene.control.Label;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;

public class GameOverScene extends FlowPane {

    private Label timeAlive;

    // constructor
    public GameOverScene(Controller controller) {

        setAlignment(Pos.TOP_CENTER);
        setBackground(new Background(new BackgroundFill(Color.rgb(197, 0, 41), null, null)));

        VBox content = new VBox();
        content.setAlignment(Pos.TOP_CENTER);

        Label gameOverMessage = new Label("Game  Over");
        gameOverMessage.setFont(new Font("Arial", 40));

        timeAlive = new Label(controller.getTimerTime());
        timeAlive.setFont(new Font("Arial", 35));
        timeAlive.setTextFill(Color.WHITE);

        content.getChildren().addAll(gameOverMessage, timeAlive);
        getChildren().add(content);
    }

    public void setTimerTime(String time) {
        timeAlive.setText(time);
    }


}
    public class GameScene extends Scene {

    // variables
    private DrawPane drawPane;
    private BorderPane root;
    private DashBoard dashBoardPane;
    private GameOverScene gameOver;
    private Controller controller;


    // constructor
    public GameScene(double width, double height, Controller controller, Game game) {
        super(new Pane());

        this.controller = controller;

        root = new BorderPane();
        drawPane = new DrawPane(this, game);
        dashBoardPane = new DashBoard(controller);
        gameOver = new GameOverScene(controller);

        root.setCenter(drawPane);
        root.setBottom(dashBoardPane);
        setRoot(root);
}

    public void switchToGameOver() {
        gameOver.setTimerTime(controller.getTimerTime());
        setRoot(gameOver);

    }
}
...