Круговая диаграмма Javafx, созданная с помощью конструктора сцен, не отображает данные

У меня возникли проблемы с использованием некоторых примеров Javafx от Oracle, поскольку «сцены» не создаются с помощью Scene Builder, поэтому код отличается от того, для чего я хочу его использовать.

Я пытаюсь создать макет с помощью конструктора сцен, который содержит круговую диаграмму. Я установил fxid диаграммы на «myPieChart» с соответствующим @FXML private Chart myPieChart; в начале моего кода.

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

    ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
            new PieChart.Data("Grapefruit", 13),
            new PieChart.Data("Oranges", 25),
            new PieChart.Data("Plums", 10),
            new PieChart.Data("Pears", 22),
            new PieChart.Data("Apples", 30));


    PieChart myPieChart = new PieChart(pieChartData);

Все значения помещаются в наблюдаемый список, а затем создается круговая диаграмма со значением ObsevableList.

К сожалению, моя круговая диаграмма не отображается... что мне не хватает, ребята?

Спасибо за любую помощь.


person user1673554    schedule 01.10.2012    source источник
comment
Если у вас все еще есть проблемы после обновления на основе моего ответа, также опубликуйте свой файл fxml и код загрузки fxml.   -  person jewelsea    schedule 02.10.2012


Ответы (2)


Не создавайте новую круговую диаграмму.

Процесс загрузки FXML создаст для вас экземпляр диаграммы и вставит его как дочерний элемент панели макета, определенной FXML. Аннотация @FXML добавит ссылку на диаграмму в ваш контроллер.

Все, что вам нужно сделать в инициализаторе вашего контроллера, это заполнить существующую диаграмму вашими данными. Это можно сделать, вызвав setData на myPieChart.

person jewelsea    schedule 01.10.2012
comment
Здоровья, приятель! Я также обнаружил, что '@FXML private Chart myPieChart;' должно было быть '@FXML private PieChart myPieChart;' После внесения этих изменений все стало хорошо! Большое спасибо, парень ... теперь нужно попытаться выяснить, как получить результаты из набора результатов в TabelView: D - person user1673554; 02.10.2012

Вы можете сделать это, просто установив идентификатор в fxml для своей диаграммы.

public class GraphScreenController implements Initializable {

    @FXML
    PieChart chart;

@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
 ObservableList<PieChart.Data> pieChartData =
            FXCollections.observableArrayList(
            new PieChart.Data("Executed", 60),
            new PieChart.Data("Passed", 25),
            new PieChart.Data("Fails", 15));

 chart.setData(pieChartData);

}
}
person Nidhi Agrawal    schedule 18.07.2013