Bhè, sperando che il resto dell'applicazione non faccia robe strane (non compatibili con applet e restrizioni varie), potresti incominciare con:
codice:
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Graphics;
import javax.swing.*;
import java.awt.Image;
import zodiaco.* ;
/** Questa riga inizia la definizione di una niova classe
*/
public class FinestraZodia extends JApplet {
Zodia zodiaco = new Zodia() ;
/** Inizializza il pannello che poi sarà inserito nella finestra.
*/
public void init() {
Segno Aries = new Ariete("Aries", "img/ariete.jpg") ;
Segno Taurus = new Toro("Taurus", "img/toro.jpg") ;
Segno Gemini = new Gemelli("Gemini", "img/gemelli.jpg") ;
Segno Cancer = new Cancro("Cancer", "img/cancro.jpg") ;
Segno Leo = new Leone("Leo", "img/leone.jpg") ;
Segno Virgo = new Vergine("Virgo", "img/vergine.jpg") ;
Segno Libra = new Bilancia("Libra", "img/bilancia.jpg") ;
Segno Scorpius = new Scorpione("Scorpius", "img/scorpione.jpg") ;
Segno Sagittarius = new Sagittario("Sagittarius", "img/sagittario.jpg") ;
Segno Capricornus = new Capricorno("Capricornus", "img/capricorno.jpg") ;
Segno Acquarius = new Acquario("Acquarius", "img/acquario.jpg") ;
Segno Pesces = new Pesci("Pesces", "img/pesci.jpg") ;
zodiaco.aggiungiSegno(Aries) ;
zodiaco.aggiungiSegno(Taurus) ;
zodiaco.aggiungiSegno(Gemini) ;
zodiaco.aggiungiSegno(Cancer) ;
zodiaco.aggiungiSegno(Leo) ;
zodiaco.aggiungiSegno(Virgo) ;
zodiaco.aggiungiSegno(Libra) ;
zodiaco.aggiungiSegno(Scorpius) ;
zodiaco.aggiungiSegno(Sagittarius) ;
zodiaco.aggiungiSegno(Capricornus) ;
zodiaco.aggiungiSegno(Acquarius) ;
zodiaco.aggiungiSegno(Pesces) ;
}
/** Metodo ereditato dalla classe JPanel serve per aggiornare il pannello.
*/
public void paint(Graphics g) {
// stampa le informazioni di testo dello zodiaco.
Segno[] segni = zodiaco.elencoAnimali() ;
System.out.println("Ci sono "+segni.length+" segni:") ;
for(int i=0 ; i<segni.length ; i++) {
Segno a = segni[i] ;
System.out.println(a.dimmiNome()+", "+a.categoria()+", dice "+a.faiPredizione()) ;
}
// dati per visualizzazione delle img nella finestra
// il numero di ammagini per ogni riga
int numero_colonne = 3 ;
// larghezza forzata per le immagini
int larghezza_immagini = 100 ;
// altezza fortzata per le immagini
int altezza_immagini = 100 ;
// spazio verticale tra due immagini dove stampare il testo
int spazio_testo = 40 ;
// colonna corrente
int colonna = 100 ;
// posizione x iniziale
int start_x = 10 ;
// posizione attuale per stampare un'immagine
int x=start_x, y=spazio_testo ;
// per ogni segno faccio stampare l'img e la predizione
for(int i=0 ; i<segni.length ; i++) {
Segno a = segni[i] ;
g.drawString(a.dimmiNome()+": "+a.faiPredizione(), x, y) ;
// se non c'e' la foto, stampa un testo di default.
Image im = a.immagine() ;
if(im!=null) {
g.drawImage(im, x, y, larghezza_immagini, altezza_immagini, this) ;
} else {
g.drawString("Foto N/A", x, y+spazio_testo) ;
}
// avanza di una colonna
colonna++ ;
// se ho ragguinto il massimo delle colonne, riparto a disegbare da sinistra
if(colonna >= numero_colonne) {
x = start_x ;
y += altezza_immagini + spazio_testo ;
colonna = 0 ;
} else {
// altrimenti vado verso destra
x += 150 + larghezza_immagini ;
}
}
}
/** Metodo main che istanzia un pannello e lo inserisce in una finestra.
*/
}
Saluti
---------
EDIT:
In verità a ben guardare, ci sono degli altri "problemi" nel tuo codice... ossia, c'è della stampa a terminale (System.out.println(....) nel metodo paint) che stride abbastanza con il concetto di applet (che è prettamente grafica)... la stampa in consolle di messaggi dalle applet dovrebbe essere effettuata solo per scopi di debug in fase di progettazione. Dovresti dire a chi ti ha passato il codice di rifare un po' tutto.
Saluti.