java JavaFX饼图未显示
所以我有了这个JavaFX应用程序,我用SceneBuilder创建了4个饼图,并将它们添加到场景中。然后我查询我的数据库以获得一些数据,并按照下面的方法将其设置为饼图。然而,一些非常奇怪的事情发生了。如果我在更新发生时查看当前场景,则一切正常。如果我看的是另一个场景,饼图不会显示。请帮忙。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();
});
}
共 (0) 个答案