Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114

    Parametri in ambiente grafico

    Ciao, ho il seguente codice


    class DrawSinEmo extends JPanel
    {

    public void paintComponent(Graphics g)
    {

    super.paintComponent(g);

    int width = getWidth ();
    int height = getHeight ();
    int c = height/2;

    int i=8459;
    int x;
    g.drawLine(0,c,width,c);

    int t =width/10;
    int p, y;
    for (p=0, x=0; x<width ;x+=10)
    {p++;}
    int ay[] = new int[p];
    int ay23[] = new int[p];
    int ay33[] = new int[p];
    int ax[] = new int[p];
    double r;
    p=0;


    for (x=0; x<width ;x+=10)
    {
    r = Math.sin (i/28.0* 2*Math.PI);
    y = (int) (c-200 * r);

    ay[p] = y;
    ax[p] = x;

    if( p > 0 ) g.drawLine (ax[p-1],ay[p-1],ax[p],ay[p]);


    r = Math.sin (i/23.0* 2*Math.PI);
    y = (int) (c-200 * r);

    ay23[p] = y;
    if( p > 0 ) g.drawLine (ax[p-1],ay23[p-1],ax[p],ay23[p]);


    r = Math.sin (i/33.0* 2*Math.PI);
    y = (int) (c-200 * r);

    ay33[p] = y;
    if( p > 0 ) g.drawLine (ax[p-1],ay33[p-1],ax[p],ay33[p]);

    i++;
    p++;

    }

    //Numerazione asse x --> ogni unità = 100px e 10 giorni
    int valore = 0, confronto;
    String l ="";
    g.setColor(Color.black);
    for (x=0, confronto=0; x<width ;x+=10, confronto++)
    {
    l = String.valueOf(valore);
    if ((confronto%10)==0) {
    g.drawString(l, x, c+20);
    g.drawLine (x, c+5, x, c-5);
    valore++;
    }
    }
    }

    }


    Richiamato nel seguente modo:


    DrawSinEmo sin1= new DrawSinEmo();

    JFrame application = new JFrame("BIO");
    application.setDefaultCloseOperation(JFrame.EXIT_O N_CLOSE);
    application.add(sin1);
    application.setSize(600,480);
    application.setVisible(true);


    Come devo fare per passare un parametro di tipo int al metodo paintComponent (o alla su classe DrawSinEmo, ditemelo voi)?
    In poche parole la variabile che ha attualmente il nome di i deve essere in realtà essere passata come parametro!
    Come si può fare?

  2. #2
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    lo metti come parametro del costruttore:
    codice:
    public DrawSinEmo(int n)
    {i=n;}

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Il forum mette a disposizione i comodi tag [code] e [/code] all'interno dei quali postare il codice, indentato.
    In questo modo viene mantenuta l'indentazione e viene automaticamente utilizzato un carattere monospaced per mantenerne la leggibilità.

    Come indicato nel Regolamento, questi tag vanno usati.

    E' semplice: o li scrivi direttamente o fai clic sul pulsantino '#' che trovi nella pulsantiera in alto quando scrivi nel forum.


    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

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114
    Il forum mette a disposizione i comodi tag code e code all'interno dei quali postare il codice, indentato.
    OK, non sapevo quale fosse il pulsante da premere, però dovete ammettere che "#" non è che sia chiarissimo!
    Per il resto c'hai ragione, la mancata indentatura da fastidio pure a me...

    o metti come parametro del costruttore:
    public DrawSinEmo(int n)
    {i=n;}
    ma poi i la devo richiamare normalmente? Cioè, il resto del programma rimarrebbe uguale? (ovviamente tranne la riga in cui definivo i)

    Perché mi dà in compilazione "Cannot Find Symbol" ad ogni occorrenza di i...
    Come fare???

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114
    Risolto, sbagliavo a fare il costruttore!
    Prima lo creavo così:
    codice:
    public class DrawSin {
    DrawSin (int v) {
    		int i = v;
    	}
    	...
    }
    invece di:
    codice:
    public class DrawSin {
    int i;
    DrawSin (int v) {
    		i = v;
    	}
    	...
    }
    Grazie a tutti!!

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.