Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [java] esecuzione di una classe

    ciao ho un problema stranissimo, quando provo ad eseguire questa classe:

    codice:
    package a_ApplicationLayer;
    
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JPanel;
    
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.ValueAxis;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.data.XYDataset;
    import org.jfree.data.time.Millisecond;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;
    import b_BusinessLayer.BusinessUser;
    
    /**
     * A demonstration application showing a time series chart where you can dynamically add
     * (random) data by clicking on a button.
     *
     */
    public class DynamicDataDemo extends ApplicationFrame implements ActionListener {
    
        /** The time series data. */
        public TimeSeries series;
        private BusinessUser dati;
        /** The most recent value added. */
        private double lastValue = 100.0;
        /**
         * Constructs a new demonstration application.
         *
         * @param title  the frame title.
         */
        public DynamicDataDemo(final String title,BusinessUser dati) {
    
            super(title);
            this.series = new TimeSeries("Random Data", Millisecond.class);
            this.dati=dati;
            final TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
            final JFreeChart chart = createChart(dataset);
            
            final ChartPanel chartPanel = new ChartPanel(chart);
            final JButton button = new JButton("Add New Data Item");
            button.setActionCommand("ADD_DATA");
            button.addActionListener(this);
    
            final JPanel content = new JPanel(new BorderLayout());
            content.add(chartPanel);
            content.add(button, BorderLayout.SOUTH);
            chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
            setContentPane(content);
    
    
        }
    
        /**
         * Creates a sample chart.
         *
         * @param dataset  the dataset.
         *
         * @return A sample chart.
         */
        private JFreeChart createChart(final XYDataset dataset) {
            final JFreeChart result = ChartFactory.createTimeSeriesChart(
                "Dynamic Data Demo",
                "Time",
                "Value",
                dataset,
                true,
                true,
                false
            );
            final XYPlot plot = result.getXYPlot();
            ValueAxis axis = plot.getDomainAxis();
            axis.setAutoRange(true);
            axis.setFixedAutoRange(20000.0);  // 60 seconds
            axis = plot.getRangeAxis();
            axis.setRange(-100.0, 0.0);
            return result;
        }
        
        public void add_valore(double val){
          this.series.add(new Millisecond(),val);
        }
        
        public void registra(){
          for(int i=0;i<20;i++)
          {
            this.series.add(new Millisecond(),this.dati.getSegnale());
            System.out.println("ciao");
          }
    
        }
    
        //  ****************************************
    ************************************
        // * JFREECHART DEVELOPER GUIDE                                               *
        // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
        // * to purchase from Object Refinery Limited:                                *
        // *                                                                          *
        // * http://www.object-refinery.com/jfreechart/guide.html                     *
        // *                                                                          *
        // * Sales are used to provide funding for the JFreeChart project - please    *
        // * support us so that we can continue developing free software.             *
        //  ****************************************
    ************************************
    
        /**
         * Handles a click on the button by adding new (random) data.
         *
         * @param e  the action event.
         */
        public void actionPerformed(final ActionEvent e) {
    
       
       }
    
        /**
         * Starting point for the demonstration application.
         *
         * @param args  ignored.
         */
        public static void main(final String[] args) {
    
          BusinessUser d= new BusinessUser();
          final DynamicDataDemo demo = new DynamicDataDemo("Dynamic Data Demo",d);
          demo.pack();
          RefineryUtilities.centerFrameOnScreen(demo);
          demo.setVisible(true);
          demo.series.add(new Millisecond(),d.getSegnale());
          demo.series.add(new Millisecond(),d.getSegnale());
          demo.series.add(new Millisecond(),d.getSegnale());
    
    
        }
    la cosa stranissima è che se prendo tutto il codice presente nel Main quindi questo

    codice:
          BusinessUser d= new BusinessUser();
          final DynamicDataDemo demo = new DynamicDataDemo("Dynamic Data Demo",d);
          demo.pack();
          RefineryUtilities.centerFrameOnScreen(demo);
          demo.setVisible(true);
          demo.series.add(new Millisecond(),d.getSegnale());
          demo.series.add(new Millisecond(),d.getSegnale());
          demo.series.add(new Millisecond(),d.getSegnale());


    e lo collego ad un'evento di un bottone di un'altra finestra

    il grafico mi si apre correttamente ma aspetta di creare tutti e tre i segnali e poi lo visualizza di colpo! (menter eseguendo lo stesso codice nel main della classe i punti venivano inseriti ogni 2 secondi [il tempo impiegato dalla funzione getsegnale()])

    nell'alro caso invece resta una finestra grigia x 6 secondi e poi mi disegna di colpo il grafico!!!

    ho provato anche a lanciare un thread apposta x il grafico ma non cambia niente...secondo voi cosa può essere?

    grazie mille!!
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  2. #2
    up!
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  3. #3
    nessuna idea?
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  4. #4
    le sto provando proprio tutte .... ma ho sempre lo stesso risultato!

    eseguendo la classe dal suo main lo fa in tempo reale...eseguendola istanziando un nuovo oggetto mi fa aspettare un po e poi mi mostra il grafico di colpo... :master: :master: :master:

    che posso fare?
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  5. #5
    penso di aver capito il motivo :gren: :gren:

    in sostanza se ben ho capito il grafico utilizza un ActionListener per aggiungere i punti delle nuove series ogni volta che ne vengono aggiunte di nuove, un ActionListener è in ascolto anche sul pulsante che io premo quando istanzio un nuovo grafico....

    infatti ho provato ad istanziare un nuovo grafico direttamente nel costruttore della classe "esterna" e tutto ha funzionato correttamente...


    public void newChart(){
    final DynamicDataDemo demo = new DynamicDataDemo("Dynamic Data Demo");
    demo.pack();
    RefineryUtilities.centerFrameOnScreen(demo);
    demo.setVisible(true);
    demo.reg();
    }


    //////// cosi non funziona //////////
    void jButton1_actionPerformed(ActionEvent e) {
    this.newChart();
    }



    ////////// cosi funziona /////////
    public classe() {
    try {
    jbInit();

    this.newChart();
    }
    catch(Exception e) {
    e.printStackTrace();
    }
    }


    ////////////

    come posso rendere i due ActionListener indipendenti? (sempre che sia questo il problema) :master: :master: :master:
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

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 © 2024 vBulletin Solutions, Inc. All rights reserved.