Fonctionnement de la méthode pack()
Hello,
Une petite question.
Dans un JPanel j'ai mis 10 JLabel contenant chacun une ImageIcon.
L'affichage permet d'afficher 8 JLabel par ligne, donc 2 sur la ligne ci-dessous.
Mon problème est que lorsque j'utilise la méthode Pack() , celle-ci ne s'applique qu'a la premiere ligne et non pas aux deux.
Je ne comprends pas vraiment comment fonctionne cette méthode.
Pourquoi s'ajuste-t-elle uniquement à la première ligne d'images et ne prends pas en compte la deuxième ligne, composée de 2 JLabel seulement ?
Voila le code (je fais quelques tests de méthodes pour voir le rendu
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| package entrainement;
import java.awt.Container;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Fenetre extends JFrame implements MouseMotionListener
{
private JPanel panneau ;
private JLabel bouton1, bouton2, bouton3, bouton4, bouton5, bouton6, bouton7, bouton8, bouton9, bouton10 ;
public Fenetre()
{
setTitle("Ma Fenêtre") ;
//On définit un panneau qui va devenir notre contentPane
panneau = new JPanel() ;
Container contenu = getContentPane() ;
contenu.add(panneau) ;
//Creation des boutons
bouton1 = new JLabel(new ImageIcon("aide_dragon.jpg")) ;
bouton2 = new JLabel(new ImageIcon("aide_fish.jpg")) ;
bouton3 = new JLabel(new ImageIcon("aide_goliath.jpg")) ;
bouton4 = new JLabel(new ImageIcon("aide_snail.jpg")) ;
bouton5 = new JLabel(new ImageIcon("aide_squid.jpg")) ;
bouton6= new JLabel(new ImageIcon("aide_turtle.jpg")) ;
bouton7 = new JLabel(new ImageIcon("aide_goliath.jpg")) ;
bouton8 = new JLabel(new ImageIcon("aide_snail.jpg")) ;
bouton9 = new JLabel(new ImageIcon("aide_squid.jpg")) ;
bouton10 = new JLabel(new ImageIcon("aide_turtle.jpg")) ;
//Ajout des boutons au panel
panneau.add(bouton1) ;
panneau.add(bouton2) ;
panneau.add(bouton3) ;
panneau.add(bouton4) ;
panneau.add(bouton5) ;
panneau.add(bouton6) ;
panneau.add(bouton7) ;
panneau.add(bouton8) ;
panneau.add(bouton9) ;
panneau.add(bouton10) ;
//Ecouteurs
bouton1.addMouseMotionListener(this) ;
bouton2.addMouseMotionListener(this) ;
bouton3.addMouseMotionListener(this) ;
bouton4.addMouseMotionListener(this) ;
bouton5.addMouseMotionListener(this) ;
bouton6.addMouseMotionListener(this) ;
bouton7.addMouseMotionListener(this) ;
bouton8.addMouseMotionListener(this) ;
bouton9.addMouseMotionListener(this) ;
bouton10.addMouseMotionListener(this) ;
}
@Override
public void mouseDragged(MouseEvent e)
{
JLabel temp=(JLabel)e.getSource();
temp.setBounds(temp.getX()+e.getX()-80,temp.getY()+e.getY()-60,160,120);
}
public static void main(String[] args)
{
Fenetre test = new Fenetre() ;
test.pack() ;
test.setVisible(true) ;
}
@Override
public void mouseMoved(MouseEvent e)
{
// TODO Auto-generated method stub
}
} |
Et les screens :
- Voici le résultat qui s'affiche sur mon écran
http://img200.imageshack.us/img200/3508/imag1g.png
(Dsl pour le PNG, j'ai oublié de les convertir JPG)
- Et Voici ce que je voudrais voir affiché
http://img193.imageshack.us/img193/7999/image2zhq.png
De ce que j'avais compris, la méthode pack()permet d'ajuster la taille en fonction des composantes.
Comment se fait-il donc qu'il s'ajuste bien en fonction de mes 8 premières images, mais pas en fonction des 2 supplémentaires ?