Newsgroup: it.comp.java
Titolo: Come faccio a...

Scusate il subject......
Dunque, i problemi sono i seguenti.
1]
Ho due finestre, una principale e una non modale, più piccola, nella
quale devo visualizzare un testo. A seconda di ciò che fà l'utente nella
finestra principale, visualizzo del testo nella finestra secondaria. Il
testo lo visualizzo in una TextArea non editabile. Il problema è che mi
da grandi casini e non riesco a capire perchè.....
C'è un modo diverso per ottenere lo stesso risultato?
2]
Sempre nello stesso programma, ho un'animazione che parte quando parte
il programma e si ferma se l'utente preme un tasto o clicca con il
mouse. Fin qui nessun problema.
Il fatto è che durante l'animazione, perdo evidentemente risorse da
qualche parte, nel senso che ho svariate "new" di oggetti di cui perdo,
ad ogni frame, il referenziamento.
Come ci si regola in casi del genere? Non avendo a disposizione una
"delete" (tipo C), come faccio a de-allocare gli oggettini (tanti) che
ogni volta alloco ed ogni volta dovrei de-allocare ma non lo faccio,
affidandomi al GC? All'inizio di ogni rendering chiamo il metodo
System.gc()?
Grazie.

da grandi casini e non riesco a capire perchè.....
Spiega meglio, che tipo di casini?
In linea astratta il sistema che hai descritto dovrebbe funzionare
correttamente.
Ciao,
mauri.
-- 
La forza di gravità è un falso mito,
è la Terra che succhia!

Maurizio Testa wrote:

Per esempio, quando viene effettuato l'aggiornamento, di solito appare (nella
TextArea) la lettera "F" (o una "A" ecc...) e non il testo che gli dico io!
Il bello è che quando non rendo visibile la seconda finestra (lo posso fare da
menù, con un CheckboxItemMenu), che rimane comunque sempre attiva, registra
correttamente tutte le attività e quando poi la rivisualizzo, le stampa tutte
correttamente...
Se però, in sede di aggiornamento, prima la rendo invisibile, poi chiamo il
metodo append() poi la ri-rendo visibile, non funziona comunque.
Perchè?
Ciao

Perchè?
Mi spiace ma non lo riesco a capire senza vedere il codice... se non è
molto, postalo (se ti va...), oppure crca di isolare le zone
*incriminate*...
Ciao,
Mauri.


Maurizio Testa wrote:

Ecco il codice estrapolato dal programma. Ci sono due classi:
- prova (classe principale)
- Console (classe secondaria, quella che da problemi)
L'istanza della console è fatta nel costruttore di prova. La sua visibilià è
controllata da menù. Ma, torno a riperter, se la console è visibile,
l'aggiornamento di textarea non funziona.
Ora proverò a scrivere un programmino semplicissimo che faccia solo questo và, per
vedere se non faccio altri casini da  qualche altra parte.....
class Console extends Dialog {
        String          text=" ";
        TextArea        ta;
     //
     //
     //
     Console(Frame parent)
     {
              super (parent, "Console", false);
              setLayout(new FlowLayout());
              int width, height;
              width = 480;
              height = 240;
              setSize(width, height);
              setBackground(Color.gray);
              setForeground(Color.black);
              Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
              setLocation((scrSize.width - width) / 2, (scrSize.height -
height)/2);
              Button reset;
              add(reset = new Button("Reset"));
              reset.setLocation(100, 200);
              ta = new TextArea(" ");
              add(ta);
              ta.setEditable(false);
         }
         //
         //
         //
         public boolean handleEvent(Event evtObj)
         {
              if (evtObj.id == Event.WINDOW_DESTROY)
              {
                   dispose();
                   return true;
              }
              return super.handleEvent(evtObj);
         }
         //
         //
         //
         public boolean action(Event evtObj, Object arg)
         {
              if (evtObj.target instanceof TextField)
              {
                   dispose();
                   return true;
              }
              if (evtObj.target instanceof Button)
              {
                   if (arg.equals("Reset"))
                   {
                          SetText(" ");
                          System.gc();
                   }
            }
             return false;
   }
     //
     //
     //
     public void paint(Graphics g)
     {
     }
        //
        //
        //
        public void SetText(String   text)
        {
        }
        //
        //
        //
        public void AppendText(String   text)
        {
                ta.append(text);
        }
}
class prova extends Frame {
    Console    ld;
    public static void main(String argv[])
    {
         prova  ist = new prova();
    }
    prova()
    {
        ...
        ld = new Console(this);
        ...
    }
     public boolean action(Event evtObj, Object arg)
     {
        if (evtObj.target instanceof CheckboxMenuItem)
        {
                        if (cb.getState() == true)
                                ld.show();
                        else
                                ld.hide();
                }
            else if (arg.equals("Menu 1"))
           {
                ld.AppendText("Appendi questo");
            }
            return true;
        }
        return    false;
   }
    public void paint()
    {
    }
}