Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120

    Errore costruttore Timer

    Ciao a tutti.
    Ho provato a scrivere un semplice programmino che animi un grafico della funzione seno.
    Il grafico preso separatamente funziona bene, ma quando cerco di istanziare un oggetto t dalla classe Timer, passandogli come argomento il delay e un ricevitore, netbeans mi segnala che non esiste il costruttore. Eppure nella documentazione della sun il costruttore che sto cercando di utilizzare esiste.
    Un grazie a chiunque possa darmi un mano.

    Ecco il codice:


    codice:
    package funzioneseno;
    
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Timer;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class Main {
        public static int FRAME_X =400;
        public static int FRAME_Y =400;
        
    
        public static void main(String[] args) {
            JFrame frame = new JFrame();
            frame.setTitle("Funzione seno");
            frame.setSize(FRAME_X, FRAME_Y);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            JPanel panel = new JPanel();
           
            SenoComponent seno = new SenoComponent();
            seno.setPreferredSize(new Dimension(400,400));
            panel.add(seno);
            
            frame.add(panel);
            frame.setVisible(true);
    
            class TimerListener implements ActionListener{
                public void actionPerformed(ActionEvent event){
                    SenoComponent seno = new SenoComponent();
                    seno.aumentaFi();
                }
            }
        ActionListener listener = new TimerListener();
        
        final int DELAY =100;// millisecondi fra ogni evento
        Timer t = new Timer(DELAY, listener);//ERRORE: costruttore sconosciuto
        t.start();// ovviamente altro errore: metodo start sconosciuto
        }
    }
    
    package funzioneseno;
    
    import java.awt.Color;
    import javax.swing.JComponent;
    import java.awt.Graphics;
    
    public class SenoComponent extends JComponent{
        public double fi=0;
    
        @Override
        public void paintComponent(Graphics g){
         
            double s=0, ampiezza=1, passo=0.001,  omega=1;
    
              int x1=100, y1=200, x2, y2, maxX=400, maxY=400, scala=2;
          
              g.drawLine(0, 200, 400, 200);//ascisse
              g.drawLine(100, 0, 100, 400);//ordinate
              g.drawString("0", 90, 220);
              g.drawLine(400, 200, 385, 195);// freccia delle
              g.drawLine(400, 200, 385, 205);// ascisse
              g.drawString("t", 380, 220);
              g.drawLine(100, 0, 95, 15);   // freccia delle
              g.drawLine(100, 0, 105, 15);  // ordinate
              g.drawString("sin", 75, 25);
              g.drawString("frequenza: "+omega, 5, 320);
              g.drawString("ampiezza: "+ampiezza, 5, 340);
              g.drawString("fi: "+fi, 5, 360);
    
            for (double t = passo; t < 2*Math.PI; t=t+passo) {
                 s=ampiezza*Math.sin(t*omega+fi);
                 x2=(int) (maxX/4+t*maxX/(6*scala));
                 y2=(int) (maxY/2-s*maxY/(2*scala));
    
                 g.setColor(Color.blue);
                 g.drawLine(x1, y1, x2, y2);
                 x1=x2;
                 y1=y2;
            }
        }
        public void aumentaFi(){
            fi+=0.1;
            repaint();
        }
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    No, quel costruttore non esiste in java.util.Timer (ed è quello che stai cercando di usdare tu), ma solo in javax.swing.Timer.

    Sono due classi diverse, con implicazioni diverse (e questo è uno dei fastidi che comporta l'uso degli IDE avanzati, quando non li si usa correttamente: hai certamente usato la funzione "Correggi l'importazione" di NetBeans accettando quello che lui ti ha proposto in automatico).

    Leggi anche l'articolo che ne spiega le differenze.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    Hai ragione, ho usato il suggerimento di netbeans senza accorgermi che stavo facendo l'import della classe sbagliata.
    Grazie mille

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