Le due soluzioni sono di pari grado di difficoltà... ovviamente la prima soluzione (2 pulsanti, "Avanti" e "Indietro") è da preferirsi, perchè ti dà più flessibilità se il numero di immagini cambia.
Vediamo, quindi, di fare un po' di luce su come impostare la cosa:
1) Creare un array bidimensionale di String dove mettere i nomi di tutte le immagini che si intende visualizzare e le relative didascalie;
2) Creare i due pulsanti "Avanti" e "Indietro" e far sì che alla pressione di uno di questi due pulsanti venga incrementato o decrementato un determinato indice (facendo gli opportuni controlli, per evitare lo sconfinamento dell'array);
3) Visualizzare quindi l'immagine rappresentata dal valore contenuto nell'array di prima alla posizione specificata dall'indice.
Un po' di codice esemplificativo:
codice:
// Creiamo l'array con i nomi delle immagini e le didascalie:
private String [][] immagini = { {"immagine1.gif", "didascalia immagine 1"},
{"immagine2.gif", "didascalia immagine 2"},
...
};
// Abbiamo bisogno di un indice globale:
private int indice;
...
// Creiamo i due pulsanti
JButton cmdAvanti = new JButton("Avanti");
JButton cmdIndietro = new JButton("Indietro");
// Creiamo la didascalia
JLabel lblDidascalia = new JLabel();
// Diciamo ai pulsanti cosa fare (questa classe fa da ActionListener)
cmdAvanti.addActionListener(this);
cmdIndietro.addActionListener(this);
...
public void actionPerformed(ActionEvent ae) {
JButton comando = (JButton) ae.getSource();
if (comando.equals(cmdAvanti)) {
// E' stato premuto il pulsante avanti
visuailzzaProssimaFoto();
} else {
// E' stato premuto il pulsante indietro
visualizzaFotoPrecedente();
}
}
private void visualizzaProssimaFoto() {
// Controlliamo che non sia già visualizzata l'ultima foto
if (indice < (NUMERO_FOTO - 1)) {
indice++;
disegnaFoto(indice);
}
}
private void visualizzaFotoPrecedente() {
// Controlliamo che non sia visualizzata la prima foto
if (indice > 0) {
indice--;
disegnaForo(indice);
}
}
private void disegnaFoto(int indice) {
// Qui ci occupiamo di disegnare a video la foto indicata dall'indice
Image img = Toolkit.getFedaultToolKit().createImage(immagini[i][0]);
... // la visualizziamo
// Cambiamo la didascalia
lblDidascalia.setText(immagini[i][1]);
}
Questo dovrebbe essere, a grandi linee, il corpo della classe di cui hai bisogno. Ho tralasciato i dettagli della visualizzazione delle immagini, se ti servono delucidazioni chiedi pure.
Ciao.