Ho usato il tuo consiglio,usando il BoxLayout
codice:
a.setLayout(new BoxLayout(a, BoxLayout.Y_AXIS));
JScrollPane scroll=new JScrollPane(a);
Container pane=getContentPane();
pane.setLayout(new GridLayout(1,2));
pane.add(scroll);
pane.add(b);
Il problema è che così me le dispone tutte su un'unica colonna.Io invece vorrei metterle magari su + colonne affiancate,in base alla dimensione del pannello (tipo quello che succede nella cartella delle "immagini" di windwos quando si seleziona la visualizzazione "anteprima").
Questi sn i 2 metodi che richiamo per caricare le immagini nel pannello:
codice:
public void azione(File dir)
{
if(a.getComponentCount()!=0)
{
a.removeAll();
a.updateUI();
}
File f[] = dir.listFiles();
ImageIcon icons[]=new ImageIcon[f.length];
for(int i=0; i<f.length;i++)
{
icons[i]=new ImageIcon(f[i].getAbsolutePath(),f[i].getName());
ImageIcon adactIcon=new ImageIcon(getScaledImage(icons[i].getImage(),100,100));
JButton thumbButton=new JButton(adactIcon);
thumbButton.setAlignmentX(JButton.CENTER_ALIGNMENT);
//creo un'etichetta per far visualizzare il nome della foto
JLabel etichetta=new JLabel(f[i].getName());
a.add(thumbButton);
a.add(etichetta);
a.revalidate();
}
}
private Image getScaledImage(Image srcImg, int w, int h)
{
BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = resizedImg.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(srcImg, 0, 0, w, h, null);
g2.dispose();
return resizedImg;
}
Sempre con questi 2 metodi,senza utilizzare lo JScrollPane faceva ciò che volevo ma mancava la barra di scorrimento x poter visualizzare tutte le anteprime.
Adesso c'è la barra ma al max sono riuscito a metterle in un'unica colonna o riga...e francamente esteticamente non mi piace affatto!