Domanda Risolto Non si vedono i grafici BarChart con JavaFX

inforge-user001

Utente Jade
28 Marzo 2020
557
61
2,311
732
Salve a tutti come da titolo sto cercando di implementare un BarChart con JavaFX e tipo avevo trovato qualche esempio online ma cercando di seguirlo non so perché non funziona.

Queste sono le variabili interessate
Java:
@FXML private BarChart andamentoAziendale;                       
    @FXML private CategoryAxis categoryAxisAziendale;
    @FXML private NumberAxis numberAxisAziendale;


Questo è il metodo initialize che inizializa semplicemente le variabili
Java:
 @FXML
    public void initialize() {
        categoryAxisAziendale = new CategoryAxis();
        numberAxisAziendale = new NumberAxis();
        andamentoAziendale = new BarChart(categoryAxisAziendale, numberAxisAziendale);
        andamentoAziendale.setData(getChartData());
        andamentoAziendale.setTitle("A");
    }

Metodo per l'acquisizione dei dati
Java:
private ObservableList<XYChart.Series<String, Double>> getChartData() {
        double aValue = 17.56;
        double cValue = 17.06;
        ObservableList<XYChart.Series<String, Double>> answer = FXCollections.observableArrayList();
        Series<String, Double> aSeries = new Series<String, Double>();
        Series<String, Double> cSeries = new Series<String, Double>();
        aSeries.setName("a");
        cSeries.setName("C");
        
        for (int i = 2011; i < 2021; i++) {
            aSeries.getData().add(new XYChart.Data(Integer.toString(i), aValue));
            aValue = aValue + Math.random() - .5;
            cSeries.getData().add(new XYChart.Data(Integer.toString(i), cValue));
            cValue = cValue + Math.random() - .5;
        }
        answer.addAll(aSeries, cSeries);
        return answer;
    }

Risultato
Cattura.PNG
 
l'unico modo che hai per capire il problema è usare il debugger del tuo IDE.
In realtà non avevi ragione bensì facevo un paiod i errori che commento per coloro che avessero il mio stesso problema:
1.Visto che uso JavaFX con SceneBuilder non devo inizializzare le variabili
2. Sbagliavo la struttura, i Series (in parole povere) sono le unità che vanno sull'asse delle X e quando faccio getdata().new.... non faccio altro che aggiungere una specie di sottosequenza... ad esempio:
Y = €
X = Mesi
Series = A, B, C

Nel mese 'Gennaio' -> A: 50€, B: 60€, C: 40€
Nel mese 'Febbraio ' -> A: 63€, B: 26€, C: 32€
Nel mese 'Marzo' -> A: 34€, B: 82€, C: 46€

Ah! Aggiungo che dall'IDE non risultava :ruloz:
 
In realtà non avevi ragione bensì facevo un paiod i errori che commento per coloro che avessero il mio stesso problema:
1.Visto che uso JavaFX con SceneBuilder non devo inizializzare le variabili
2. Sbagliavo la struttura, i Series (in parole povere) sono le unità che vanno sull'asse delle X e quando faccio getdata().new.... non faccio altro che aggiungere una specie di sottosequenza... ad esempio:
Y = €
X = Mesi
Series = A, B, C

Nel mese 'Gennaio' -> A: 50€, B: 60€, C: 40€
Nel mese 'Febbraio ' -> A: 63€, B: 26€, C: 32€
Nel mese 'Marzo' -> A: 34€, B: 82€, C: 46€

Ah! Aggiungo che dall'IDE non risultava :ruloz:

Sono contento tu abbia risolto, ad ogni modo il debug è la procedura che ti aiuta a capire dove stanno gli errori! Con questa procedura riesci anche a capire se le variabili che hai inizializzato corrispondo oppure no ovvero se quella che stai stampando a video corrisponde alla variabile che è stata modificata e se è stata modificata.
Ad ogni modo quello che hai riscontrato altro non era che un errore di progettazio e che quindi lo avresti comunque risolto con o senza debugg con la unica differenza che con il debug avresti impiegato molto meno tempo.