Bonjour,
Je ne comprends pas pourquoi ma scrollbar ne s'affiche.
Il me semble pourtant avoir tout fait...
HELP ME !!!!
Si je mets un BorderLayout CENTER à ma fenêtre c'est parce que mon JPanel doit aller s'intégrer dans un autre JPanel qui est managé par un BorderLayout CENTER...
Aidez-moi....
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.io.File;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.Border;
public class PanelImage extends JPanel{
private Dimension dimension_vignette = new Dimension(90, 60);
private JFrame toto;
private JScrollPane myScroll;
private JPanel panelParcourir = new JPanel(new VerticalLayout());
private JLabel blanc = new JLabel();
private JButton btnParcourir = new JButton();
private Border couleur_cadre = BorderFactory.createLineBorder(Color.BLACK);
public PanelImage() {
this.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
myScroll = new JScrollPane(this);
myScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
myScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
MAJ();
// Création de la fenêtre de Test
toto = new JFrame();
toto.getContentPane().setLayout(new BorderLayout());
toto.getContentPane().add(this.getScroll(), BorderLayout.CENTER);
toto.setSize(400, 200);
toto.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
toto.setVisible(true);
}
public JScrollPane getScroll() {
return myScroll;
}
public void MAJ() {
this.removeAll();
btnParcourir.setText("Parcourir...");
btnParcourir.setBorder(couleur_cadre);
btnParcourir.setPreferredSize(dimension_vignette);
blanc.setPreferredSize(new Dimension(1, 15));
panelParcourir.add(btnParcourir);
panelParcourir.add(blanc);
this.add(panelParcourir);
// On récupère la liste des images
Vector listeImages = new Vector();
File tmpFiche;
String nom = new String();
try {
tmpFiche = new File("C:\\paramSuedeV2\\repIcone");
File[] present = tmpFiche.listFiles();
for (int i = 0; i < present.length; i++) {
nom = (present[i].getName()).toLowerCase();
if (nom.endsWith(".gif")) {
listeImages.add(present[i]);
}
}
} catch (Exception e) {
System.out.println("***Exception pour lister les images !");
}
// On crée un panel pour chaque image...
for (int i=0; i < listeImages.size(); i++) {
tmpFiche = (File)listeImages.get(i);
this.add( new VignetteImage(tmpFiche) );
}
}
public class VignetteImage extends JPanel {
public JLabel myImage;
public JLabel myLabel = new JLabel();
public VignetteImage (File fichier) {
this.setLayout(new VerticalLayout(0, 0));
// Gestion de l'image
ImageIcon img = new ImageIcon(fichier.getAbsolutePath());
// TODO : PENSER A REDEFINIR LA TAILLE DE L'IMAGE
myImage = new JLabel(img);
myImage.setPreferredSize(dimension_vignette);
myImage.setBorder(couleur_cadre);
// Gestion du texte
myLabel.setText(fichier.getName());
myLabel.setPreferredSize(new Dimension(dimension_vignette.width, 15));
myLabel.setHorizontalAlignment(JLabel.CENTER);
myLabel.setBorder(null);
myLabel.setOpaque(false);
this.add(myImage);
this.add(myLabel);
}
}
public static void main(String[] args) {
new PanelImage();
}
}
Voici le résultat que j'obtient :

Merci pour votre aide.
Fabien