Nella classe che gestisce l'apertura della directory richiamo un metodo che aggiorna la lista di JButton ossia:
codice:
public void inizializzaListaFileImmagini(){
Sessione sessione = (Sessione) this.controllo.getModello().getBean(Costanti.SESSIONE);
ArrayList<Immagine> listaImmagini = sessione.getListaImmagini();
Vector<JButton> vector = new Vector<JButton>();
for(int j=0;j<listaImmagini.size();j++){
Immagine immagine1 = (Immagine)listaImmagini.get(j);
ImageIcon icona2 = new ImageIcon(immagine1.prelevaFileImmagine());
Image image= icona2.getImage();
if (icona2.getIconWidth() > 200) {
image = image.getScaledInstance(120,(icona2.getIconHeight() *120)/icona2.getIconWidth(), 1);
icona2.setImage(image);
}
if (icona2.getIconHeight() > 200) {
image = image.getScaledInstance((icona2.getIconWidth() * 120)/icona2.getIconHeight(),120, 1);
icona2 = new ImageIcon(image);
}
JButton button = new JButton();
button.setAction(this.controllo.getAzione(Costanti.AZIONE_CAMBIA_IMMAGINE));
button.setIcon(icona2);
button.setText("");
vector.add(button);
}
this.listaImmagini.repaint();
this.listaImmagini.setListData(vector);
this.listaImmagini.setCellRenderer(new ButtonCellRenderer(controllo));
this.scrollPaneRiepilogoImmagini.setViewportView(this.listaImmagini);
this.scrollPaneRiepilogoImmagini.repaint();
}
L'azione che richiamo attraverso Costanti.AZIONE_CAMBIA_IMMAGINE è la seguente:
codice:
public class AzioneCambiaImmagine extends AbstractAction{
private Controllo controllo;
public AzioneCambiaImmagine(Controllo controllo){
this.controllo=controllo;
this.putValue(NAME, "Cambia immagine");
this.putValue(SMALL_ICON, new ImageIcon("C:/oggettidue/browserImmagini/icone/Picture-32x32.png"));
this.putValue(SHORT_DESCRIPTION, "Cambia immagine");
this.putValue(MNEMONIC_KEY, KeyEvent.VK_C);
this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl C"));
}
public void actionPerformed(ActionEvent e) {
Vista vista = this.controllo.getVista();
SchermoPrincipale schermoPrincipale = (SchermoPrincipale) vista.getSottoVista(Costanti.VISTA_SCHERMO_PRINCIPALE);
int immagineSelezionata = schermoPrincipale.getSelectedIndex();
if(immagineSelezionata==-1){
vista.finestraErrore("Selezionare un immagine");
}else{
vista.finestraInformazione("Selezione effettuata");
Sessione sessione = (Sessione) this.controllo.getModello().getBean(Costanti.SESSIONE);
Immagine immagine = sessione.getImmagineSelezionata(immagineSelezionata);
schermoPrincipale.inizializzaImmagine(immagine.getPercorso());
}
}
}
Naturalmente nella sessione salvo tutte le immagini delle directory.