devo fare una JFrame con 10 immagini e 2 bottoni avanti e indietro che fatto scorrere le immagini
ho impostato la grafica e fin qui tutto ok, ho inserito le classi che dovrebbero far andare avanti e indietro le immegini con le relative didascalie ma non mi funziona e non capisco dove sbaglio
c'è qualcuno di così gentile da darci un occhiata????
qui di seguito il codice GRAZZZZIIIIEEE
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Progetto1207 extends JFrame {
//le dichiarazioni private
private JButton b1;
private JButton b2;
private JLabel etichetta;
private JPanel pannello;
//inserisco due pannelli in cui inserire i bottoni
private Box boxindietro;
private Box boxavanti;
private ImageIcon fotostart;
private JLabel didascalia;
private JLabel etichetta2;
private String[] [] immagini ={
{"foto1.jpg", "foto1"},
{"foto2.jpg", "foto2"},
{"foto3.jpg", "foto3"},
{"foto4.jpg", "foto4"},
{"foto5.jpg", "foto5"},
{"foto6.jpg", "foto6"},
{"foto7.jpg", "foto7"},
{"foto8.jpg", "foto8"},
{"foto9.jpg", "foto9"},
};
private int FOTO;
private int indice;
public Progetto1207 (){
//definiamo gli elementi
setTitle("..::::::GALLERIA DI IMMAGINI:::::..");
b1=new JButton("<<");
b1.setBackground(new Color(250, 170,2));
b1.addActionListener(new AL());
b2=new JButton(">>");
b2.setBackground(new Color(250, 170,2));
b2.addActionListener(new AL());
etichetta=new JLabel("Gustav Klimt", SwingConstants.CENTER );
etichetta.setFont(new Font("Verdana", Font.BOLD, 14));
fotostart=new ImageIcon ("foto0.jpg");
etichetta2=new JLabel(fotostart);
didascalia=new JLabel("FAGGETO, 1902 Gemäldegalerie Dresda", SwingConstants.CENTER);
didascalia.setFont(new Font ("Verdana", Font.ITALIC, 12));
didascalia.setForeground(Color.red);
didascalia.setText(immagini[0] [1]);
this.etichetta2=new JLabel(new ImageIcon( Toolkit.getDefaultToolkit().createImage(fotostart[indice] [0])));
//definisco i pannelli per i bottoni e vi aggiungo i bottoni
boxindietro = new Box(BoxLayout.Y_AXIS); // crea box verticale
boxindietro.add(Box.createVerticalStrut(275));
boxindietro.add(b1);
boxavanti = new Box(BoxLayout.Y_AXIS); // crea box verticale
boxavanti.add(Box.createVerticalStrut(275));
boxavanti.add(b2);
//definisco il pannello e vi inserisco gli elementi
pannello=new JPanel();
getContentPane().setLayout(new BorderLayout());
//coloro lo sfondo dell pannello di bianco
getContentPane().setBackground(Color.orange);
getContentPane().add(etichetta, BorderLayout.NORTH);
getContentPane().add(boxindietro, BorderLayout.WEST);
getContentPane().add(boxavanti, BorderLayout.EAST);
getContentPane().add(etichetta2, BorderLayout.CENTER);
getContentPane().add(didascalia, BorderLayout.SOUTH);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main (String args[]) {
new Progetto1207();
}
class AL implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton comando = (JButton) e.getSource();
if (comando.equals(b2)) {
//è stato premuto il pulsante avanti
visualizzaProssimaFoto();
}else{
visualizzaFotoPrecedente();
}
//cambiamo didascalia
didascalia.setText(immagini[indice] [1]);
}
private void visualizzaProssimaFoto() {
//controllo ch enon sia già visualizzata l'ultimafoto
if(indice <(FOTO - 1)) {
indice++;
disegnaFoto(indice);
}else{
indice = 0;
}
}
private void visualizzaFotoPrecedente() {
//controllo che non sia visualizzata la prima foto
if (indice>0) {
indice--;
disegnaFoto(indice);
}
}
private void disegnaFoto(int indice) {
//disegnamo la foto indicata dall'indice
Image img = Toolkit.getDefaultToolkit().createImage(immagini[indice] [0]);
//la visualizziamo
this.image.setIcon( new ImageIcon( Toolkit.getDefaultToolkit().createImage(immagini[indice] [0]) ) );
}
}
}