Visualizzazione dei risultati da 1 a 3 su 3

Hybrid View

  1. #1

    [JAVA] Aggiornare grafico JFreeChart

    Ciao a tutti, come da oggetto della discussione, ho un problemino con un grafico JFreeChart, in pratica il grafico prende i dati da una 3 textField che cambiano valore in seguito ad un azione su di una comboBox, la prima volta riesco a visualizzare i dati, ma provo a cambiare mi mostra sempre il grafico precedente non aggiornando i dati.

    VI posto il codice:

    codice:
    comboBoxAnnoStatistiche.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    
                    //aggiorno le textField
                    StatisticheConcessioni sc = new StatisticheConcessioni();
                    String periodo = (String)comboBoxAnnoStatistiche.getSelectedItem();
                    sc.calcolaOneri(periodo);
                    
                    textFieldOneriRichiestiCanoni.setText(""+sc.oneriRichiestiC);
                    textFieldOneriVersatiCanoni.setText(""+sc.oneriVersatiC);
                    textFieldOneriNonVersatiCanoni.setText(""+sc.oneriNonVersatiC);
                    
                    textFieldOneriRichiestiSecFee.setText(""+sc.oneriRichiestiS);
                    textFieldOneriVersatiSecFee.setText(""+sc.oneriVersatiS);
                    textFieldOneriNonVersatiSecFee.setText(""+sc.oneriNonVersatiS);
                    
                    textFieldOneriRichiestiComplessivi.setText(""+sc.oneriRichiestiCC);
                    textFieldOneriVersatiComplessivi.setText(""+sc.oneriVersatiCC);
                    textFieldOneriNonVersatiComplessivi.setText(""+sc.oneriNonVersatiCC);
                    
                    DefaultPieDataset datasetCanone = new DefaultPieDataset( );             
                    datasetCanone.setValue( "Oneri Richiesti" , sc.oneriRichiestiC );             
                    datasetCanone.setValue( "Oneri Versati" , sc.oneriVersatiC);             
                    datasetCanone.setValue( "Oneri Non Versati" , sc.oneriNonVersatiC );             
                    
                    JFreeChart chartCanone = ChartFactory.createPieChart3D( 
                       "Grafico Canoni" ,  // chart title                   
                       datasetCanone ,         // data 
                       true ,            // include legend                   
                       true, 
                       false);
    
    
                    final PiePlot3D plot = ( PiePlot3D ) chartCanone.getPlot( );             
                    plot.setStartAngle( 270 );             
                    plot.setForegroundAlpha( 0.60f );             
                    plot.setInteriorGap( 0.02 );
                    
                    ChartPanel graficoCanone = new ChartPanel(chartCanone);
                    graficoCanone.setBounds(10, 14, 450, 255);
                    contenitoreGraficoCanone.add(graficoCanone);
                }
            });
    Ho già fatto una ricerca su internet, dicevano di usare il metodo repaint(), ma purtroppo non ho ottenuto nessun risultato.

    Vi ringrazio sempre in anticipo!

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da diabolik03 Visualizza il messaggio
    Ho già fatto una ricerca su internet, dicevano di usare il metodo repaint(), ma purtroppo non ho ottenuto nessun risultato.
    Non sono competente su JFreeChart ma credo che il problema non sia a quel livello ma a livello di layout/contenitori.

    Cosa è contenitoreGraficoCanone? Non sta usando un layout manager, vero? (hai usato setBounds, che di norma si usa proprio quando non c'è un layout manager). E tieni presente che stai aggiungendo un nuovo componente ad una posizione/dimensione ben precisa. Ce n'era già uno prima a quella locazione?

    Presumo che non sia la cosa ottimale creare un nuovo ChartPanel ogni volta. Da quello che leggo sul javadoc di JFreeChart, ChartPanel ha un metodo setChart(JFreeChart chart). Quindi usa sempre lo stesso ChartPanel e cambia solo il grafico.

    Prova a ragionare su questi aspetti.
    Ultima modifica di andbin; 01-10-2015 a 15:05
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie avevi ragione ho risolto!! Ho creato un ChartPanel come attributo della classe, passandogli null al costruttore e poi successivamente nel metodo per la creazione del grafico ho usato .setChar() e adesso funziona perfettamente!

    Grazie!! Come al solito siete i migliori!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.