Newsgroup: it.comp.java
Titolo: Applet avviata ma non visualizzata!

Sapete dirmi perchč non visualizza l'Applet?
No ho errori di compilazione, ma nella pagina web l'applet viene avviata ma
non visualizza niente...   Ecco il codice:
import java.applet.*;
import java.awt.*;
public class Colors {
 int x = 0, y = 0, i = 0;
 void del (int z) {
  int k = 0;
  while (k < z) {
   k++;
  }
 }
 public void paint (Graphics g)
  do {
   i++;
   do
    x++;
    y++;
    g.drawOval (0, 0, x, y);
   }
   while (x < 200);
   do {
    x--;
    y--;
    g.drawOval (0, 0, x, y);
   }
   while (x < 0);
  }
  while (i < 4);
  del (50);
 }
}
/* HTML della pagina in cui dovrebbe essere visualizzata l'Applet */
<html>
<applet code = "Colors.class" width = 200 heigth = 200>
</applet>
</html>
Colors.class si trova nella stessa cartella della pagina.
Grazie
--
Posted from [195.223.215.6] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
000a01c018b8$3fd5d000$a6352797@u8e3o5...


Non sono necessari i metodi da te citati per far partire l'applet.
Nel caso descritto da "Luigi" è necessaria solo la ridefinizione del metodo
paint.
Cmq Luigi riguarda il tuo codice perché (oltre all'errore descritto da mmm)
mancano alcune parentesi graffe. 
Inoltre il metodo paint deve essere all'interno di Colors.

Dovresti anche inizializzare gli oggetti color che crei passando al
costruttore tre argomenti int oppure tre float. Qualcosa come:
Color oggetto = new Color(150,150,150);
// oppure
Color oggetto = new(1.5F, 3.7F, 50.7F);
nel tuo caso:
Color array[] = new Color[158];
array[60] = new Color(50,50,50);
g.setColor(array[60]);
I numeri servono a definire la quantità di red, green e blue per formare i
colori (secondo il modello RGB).
Un altro modo è quello di utilizzare le variabili di classe di Color
passandole direttamente a setColor:
g.setColor(Color.black);
Spero di esserti stato di aiuto.

Grazie per la tua risposta, ho provato con g.setColo (Color.red) e funziona
però nell'altro modo no.
import java.applet.*;
import java.awt.*;
public class Geom extends Applet{
 Color col[] = new Color[158];
 col[60] = new Color(50,50,50);
 public void paint (Graphics g)
    g.setColor (col[60]);
    g.drawOval (320, 0, 320, 240);
    g.drawRect (320, 0, 320, 240);
    }
   }
Mi diche che la dimensione dell'array non è stata specificata.


Invece a me dice che in una dichiarazione di array non si puņ mettere il
numero di elementi e identificatore dimenticato.
Color[] coll = new Color[10];
coll[0] = new Color(50,50,50);
il compilatore mi interpreta la seconda riga come una dichiarazione e mi da
errore.
Allora ho provato a scrivere un qualsiasi altro array:
Label[] etic = new Label[10];
etic[2] = new Label("stringa");
qua invece non mi viene segnalato alcunché.
Per me č un bug del compilatore perché non vi č nulla di diverso nelle due
dichiarazioni (a parte gli oggetti).

Quindi rimaniamo con g.setColor (Color.red)  ?


Prova anche con un solo oggetto color.
In poche parole
public void paint(Graphics screen) {
          Color oggetto = new Color(50,50,50);
          screen.setColor(oggetto);
          // altro codice a seguire.
Un'altra cosa, i numeri all'interno di color li ho messi a casaccio, non so
nemmeno cosa ne esce.
Personalmente consiglio di usare sempre le variabili della classe Color
quando non si vogliono colori specifici.
Bada però che gli int o i float del costruttore devono rimanere compresi
tra 0 e 255, il compilatore non dovrebbe segnalare errore, ma in fase di
esecuzione potresti trovarti di fronte a risultati pessimi.            

Ora funziona, ma come faccio a cambiare colore a Run-Time?
I parametri del costruttore si possono modificare a Run-Time?
Grazie


Scusami per il ritardo.
Sě, č possibile, ma per far ciň occorrono delle variabili o degli oggetti
che prendano per te il valore e tu devi solamente passarne ai costruttori
il nome (nel caso delle variabili) o tramite metodi specifici (negli
oggetti).
Ad esempio, fai conto che a, b, c siano tre variabili di tipo int con il
valore immesso da tastiera dall'utente. Tu non devi far altro che scrivere:
Color oggetto = new Color(a, b, c);
Nel tuo caso potresti fare un applet con tre TextField che prelevano i tre
valori, poi con l'utilizzo di Integer.parseInt() convertire il testo di
ciascuna TextField in un numero da passare successivamente a Color().
Qualcosa come:
1) 
    int a = Integer.parseInt(tf1.getText());
    int b = Integer.parseInt(tf2.getText());
    int c = Integer.parseInt(tf3.getText());
 
    Color variabile = new Color(a,b,c);
2)
    Color variabile = new Color(Integer.parseInt(tf1.getText()),           
    Integer.parseInt(tf2.getText)), Integer.parseInt(tf3.getText)));
 
Bada perň ad alcune cosette: la prima č che i numeri immessi dall'utente
devono essere compresi tra 0 e 255 estremi compresi e che la stringa sia
convertibile in numero.
Detto questo a te il divertimento, se hai ancora bisogno di qualcosa io
sono sempre disponibile.
 
 
 
 
 

> Sapete dirmi perchè non visualizza l'Applet?
In proposito avrei un "sasso" da lanciare. Tempo fa sviluppai la "solita"
propria pagina web (tanto per caZarare un pò :P) sviluppai un'applet presa
da "Java La guida Completa" McGrawHill per la gestione di menu che cambiano
immagine al passaggio del mouse (ancora non c'era dhtml credo) . Bhe, una
volta caricata sul sito della geocities funziona(va) quando gli pare(va).
Mha? Dipende dal server? Dal browser. Non è che mi strappi i capelli dal
pensarci, però è giusto un sasso buttato lì...