Круговая диаграмма JavaFX не отображается - PullRequest
0 голосов
/ 30 апреля 2018

Итак, у меня есть это приложение JavaFX, и я создаю 4 круговых диаграммы с помощью SceneBuilder и добавляю их в сцену. Затем я запрашиваю свою базу данных, чтобы получить некоторые данные, и я устанавливаю ее на круговые диаграммы в методе ниже. Однако происходит нечто очень странное. Если я смотрю текущую сцену, когда происходит обновление, все работает нормально. Если я смотрю на другую сцену, круговые диаграммы не отображаются. Пожалуйста помоги. Методы get не требуют каких-либо вычислений, если это имеет значение.

поля:

@FXML
    private PieChart pieGender;
    @FXML
    private PieChart pieAge;
    @FXML
    private PieChart pieIncome;
    @FXML
    private PieChart pieContext;

метод обновления:

//extracts and display data on this panel
    public synchronized void updatePanelData() {
        //update from the fx thread
        Platform.runLater(() -> {
            ObservableList<PieChart.Data> gender = FXCollections.observableArrayList(
                    new PieChart.Data("Male", this.dataRetriever.getGenderMale()),
                    new PieChart.Data("Female", this.dataRetriever.getGenderFemale())
            );

            this.pieGender.setData(gender);

            ObservableList<PieChart.Data> age = FXCollections.observableArrayList(
                    new PieChart.Data("<25", this.dataRetriever.getAgeLessThan25()),
                    new PieChart.Data("25-34", this.dataRetriever.getAge25To34()),
                    new PieChart.Data("35-44", this.dataRetriever.getAge35To44()),
                    new PieChart.Data("45-54", this.dataRetriever.getAge45To54()),
                    new PieChart.Data(">54", this.dataRetriever.getAgeOver54())
            );

            this.pieAge.setData(age);

            ObservableList<PieChart.Data> income = FXCollections.observableArrayList(
                    new PieChart.Data("Low", this.dataRetriever.getLowIncome()),
                    new PieChart.Data("Medium", this.dataRetriever.getMedIncome()),
                    new PieChart.Data("High", this.dataRetriever.getHighIncome())
            );

            this.pieIncome.setData(income);

            ObservableList<PieChart.Data> context = FXCollections.observableArrayList(
                    new PieChart.Data("News", this.dataRetriever.getContextNews()),
                    new PieChart.Data("Shopping", this.dataRetriever.getContextShopping()),
                    new PieChart.Data("Social Media", this.dataRetriever.getContextSocialMedia()),
                    new PieChart.Data("Blog", this.dataRetriever.getContextBlog()),
                    new PieChart.Data("Hobbies", this.dataRetriever.getContextHobbies()),
                    new PieChart.Data("Travel", this.dataRetriever.getContextTravel())
            );

            this.pieContext.setData(context);


            this.labelClick.setText(this.dataRetriever.getNumberOfClicks().toString());
            this.labelServer.setText(this.dataRetriever.getServerNumber().toString());
            this.labelImpression.setText(this.dataRetriever.getNumberOfImpressions().toString());

            this.updateDateFilter();
        });
    }

Что произойдет, если я не смотрю сцену круговых диаграмм во время обновления: enter image description here

...