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

    [Java] Solo X veri esperti

    Ciao ragazzi ho un grosso problema..ho un Java applet che inserisce dei parametri e mediante una certa formula calcola un valore che butta nell'applet nella label di uscita...qsto applet funziona xfettamente..qndo schiaccio il pulsante calcola..lui fa tutti gli assegnamenti dei valori dell'utente e i calcoli..fino qui tutto ok...il problema sorge ora...devo passare 3 paramentri ad una nuova applet: 2 double e 1 char...un double e char fornito dall utente e l'altro è il calcolo finale...io faccio il passaggio di paramentri dato che sono variabili private in questo modo:
    public double getRisultato()
    { return risultato;
    }
    Ora... questi valori mi risultano nulli probabilmente il medodo INIT dell applet che funge da costruttore non fa da costruttore assegnando i valori (penso io)...ho l'impressione che una volta che calcola i dati..si xdono. Come posso Ovviare a questo inconveniente?
    L'altra applet funziona xfettamente xche se do i valori a mano lei disegna....
    aiutatemiiiii xfavore ciaoooo!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Così speigato non ho capito come viene utilizzato il metodo getRisultato() né cosa tu intenda per "passaggio di parametri". Non mi sembra che questi parametri vengano passati dall'HTML, almeno credo.

    Prova a postare un po' di codice, descrivendo quale sarebbe il comportamento atteso e quale, invece, il problema che si verifica (anche tramite un esempio).


    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

    x Lele FT

    Cercherò di essere piu chiaro...
    Questo è il primo applet:
    public class BCalcola extends Applet
    {

    //5 TextField
    private TextField strike,stock,yTM,tasso,volatilita,dividendi;
    //label risultati
    private Label opValueRes;
    //2 bottoni
    private Button cancella;
    private Button calcola;
    //x il grafico
    private double T,r,v,d=0;
    private double risultato,X,S;
    private char tipo;
    //private Graf1 gr; //variabile di tipo Graf1 x il disegno del grafico
    //fine variabili

    //METODI X PASSARE LE VARIABILI ALL ALTRA APPLET
    public double getStrike()
    {
    return X;
    }
    public double getRisultato()
    {
    return risultato;
    }
    public char getTipo()
    {
    return tipo;
    }


    public void init()
    {
    //inizializzazione label dei risultati da mettere nella gestione pulsante
    opValueRes=new Label ("N/A");

    //creazione Text Field
    stock= new TextField(5);
    strike= new TextField(5);
    yTM= new TextField(5);
    tasso= new TextField(5);
    volatilita= new TextField(5);
    dividendi=new TextField(1);
    //fine creazione Text Field
    // Inizializzazione dei valori di default
    tipo='C';//x defaut si inizia con una call
    dividendi.setEnabled(false);// x default i dividendi non sono attivi
    AscoltaActionListener aal;//crea una var di tipo actionlistener che servira a generare i comandi dei button
    aal=new AscoltaActionListener();
    calcola=new Button("Calcola");
    cancella=new Button("Cancella");
    calcola.addActionListener(aal);
    //da implementere
    cancella.addActionListener(aal);
    //disegno componenti a NORD il titolo a est le label a ovest il box e a sud i punsanti
    setLayout(new BorderLayout());
    Panel tit1=new Panel();
    [...]
    class AscoltaActionListener implements ActionListener
    {

    //classe che gestisce i bottoni calcola e cancella
    public void actionPerformed (ActionEvent event)
    {
    //source scopre che tipo di tasto si tratta
    Object source= event.getSource();

    if(source==calcola)
    {
    //inserisco un oggetto di tipo funzione
    funzione fun=new funzione();
    fun.controlli();//chiama il metodo che inserisce i dati e effettua i controlli
    if(dividendi.isEnabled()) //verifica se si è scelto di inserire i dividendi
    {
    fun.calcDividendi();
    }
    else fun.calSenzaD();

    qui è l'altro file che riceve i parametri...
    public class Graf1 extends Canvas
    {
    private BCalcola a= new BCalcola();
    char tipo;
    private final int UNITA=3; //fattore di conversione
    private final int ALTEZZA=200;
    private final int LUNGHEZZA=350;
    private int X1,XMax,X2,YMax,Y1,Y2;
    private double K,S;


    public void paint (Graphics g)
    {
    setSize(LUNGHEZZA,ALTEZZA);
    YMax=ALTEZZA;
    XMax=LUNGHEZZA;

    tipo='C';
    S=10;
    K=5;
    K=a.getStrike();
    S=a.getRisultato();
    tipo=a.getTipo();

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Premetto che non sono stato lì a leggermi minuziosamente il codice, anche perchè era meglio se lo includevi fra i due tag [*CODE] e [*/CODE] (senza l'asterisco).
    Ma ho notato lo stesso un errore: noto che nella classe BCalcola fai uso di un oggetto di tipo Graf1 e all'interno di Graf1 crei un oggetto di tipo BCalcola... questo è, nella maggior parte dei casi e credo anche in questo caso, un errore: infatti tu poi cerchi di usare il metodo getRisultato di BCalcola attraverso l'oggetto creato all'interno di Graf1.
    Quando si deve accedere a variabili istanziate in un determinato oggetto, bisogna ricorrere ad un riferimento a quell'oggetto all'interno del blocco (o classe) che deve ricevere il valore di ritorno del metodo, non ha nessun senso istanziare un nuovo oggetto.

    Ora, nel codice che hai postato non si vede dove viene istanziato l'oggetto Graf1 all'interno di BCalcola, ma la struttura andrebbe rivista, in questo modo:

    Crei un oggetto BCalcola che è l'applet principale. All'interno di quest'applet crei un oggetto Graf1, passando al suo costruttore il riferimento all'applet:
    codice:
    public class BCalcola extends Applet {
       ...
       private Graf1 gr;
       ...
       gr = new Graf1(..., this);
    }
    modificando, quindi, il costruttore di Graf1 aggiungendo come parametro l'applet:
    codice:
    public class Graf1 extends Canvas {
       private BCalcola a;
       ...
       public Graf1(..., BCalcola a) {
          ...
          this.a = a;
       }
    }
    Ora puoi utilizzare, come hai fatto, il metodo getRisultato() della classe BCalcola all'interno dell'oggetto Graf1 tramite l'oggetto a, sapendo che il valore di ritorno sarà coerente con ciò che è stato calcolato in base ai valori attualmente presenti.


    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

  5. #5
    Guarda che in BCalcola non creo un oggetto di tipo Graf1 semmai è il contrario in graf1 creo l'oggetto di BCalcola...e x qnto riguarda il nn sono pratico di queste cose mi scuso...
    Ma in che modo posso passare le tre variabili (risultato, tipo, X) al file Graf1? dato che in qsto modo sono null?

  6. #6
    Ma nessuno mi aiuta?

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Sì, ti stavo rispondendo poi ho avuto un impegno e me ne sono scordato:

    Il procedimetno da seguire è quello che ti ho illustrato io sopra: istanziare un oggetto Graf1 all'interno dell'applet (anche perchè è l'applet a fornire il metodo ed è sempre l'applet ad essere avviata per prima) e passare il riferimento all'applet al costruttore dell'oggetto Graf1, il quale al suo interno istanzierà una copia privata dell'applet e potrà, di conseguenza, accedre ai suoi metodi.


    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

  8. #8

    LELEEEEEEEEE

    Mi puoi fare un esempio x favore x chirirmi le idee della tua spiegazone? A me servono le variabili di BCalcola xche mai devo usare metodi di Graf1...lui utilizza gia un altro file x visualizzare l'applet su schermo

  9. #9
    costruttore dell'oggetto Graf1, il quale al suo interno istanzierà una copia privata dell'applet
    CIOè?

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.