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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?