Bonjour,

Dans mon appli, je voudrais laisser la possibilité à l'utilisateur de choisir l'apparence des formes qu'il peut dessiner. Pour cela, j'ai créé une boîte de dialogue où il peut choisir la couleur du contour, de l'arrière-plan, l'épaisseur du trait et le type de trait (trait plein, pointillés, axe).

Pour cette dernière option, je voulais utiliser le même principe que Word, c'est-à-dire une JComboBox dans laquelle je représente le type de trait.
Et je ne sais pas trop comment faire.

Je pensais ajouter dans la JComboBox des éléments de type JLabel ou JPanel pour lesquels j'aurais redéfini la méthode paint(Graphics g) afin qu'elle trace la représentation adéquate.
J'ai donc créé 3 classes quasiment identiques où seule la méthode paint() diverge. Voici l'une d'elle :

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
 
	class AxisStrokePanel extends JPanel {
 
		public AxisStrokePanel() {
			super();
			setSize(40,20);
		}
 
		public AxisStrokePanel(boolean arg0) {
			super(arg0);
			setSize(40,20);
		}
 
		public AxisStrokePanel(LayoutManager arg0, boolean arg1) {
			super(arg0, arg1);
			setSize(40,20);
		}
 
		public AxisStrokePanel(LayoutManager arg0) {
			super(arg0);
			setSize(40,20);
		}
 
 
		/**
                 * Méthode de dessin.
                 * Remplit le panel avec la couleur grise et trace la représentation
                 * du style de trait correspondant au panel (ici un trait plein).
                 */
		public void paint(Graphics g) {
			super.paint(g);
 
			Graphics2D g2d = (Graphics2D) g;
			g2d.setBackground(Color.WHITE);
			g2d.setColor(Color.BLACK);
 
			g2d.drawLine(0, 10, 15, 10);
			g2d.drawLine(20, 10, 25, 10);
			g2d.drawLine(30, 10, 45, 10);
			g2d.drawLine(50, 10, 55, 10);
		}
	}
Or il se trouve que lorsque j'ajoute ces éléments à ma JComboBox, celle-ci m'affiche juste le nom de la classe. Ceci correspond à ce qui est dit dans la Javadoc, puisque le Renderer de la JComboBox applique la méthode toString() à l'item sélectionné.

Il semblerait donc qu'il faille redéfinir le Renderer, mais je n'arrive pas à le faire.
Quelqu'un saurait-il comment je dois m'y prendre?

Merci d'avance!