Bonjour,

J'essaie de fabriquer des boutons. Pour mon premier bouton fait maison j'ai fait une sorte d'étoile en créant une classe MyComponent qui étend AbstractButton (en fait j'ai regardé le code source de JButton pour hériter et implémenter les mêmes classes -> voir ici).
Donc j'arrive à ajouter un ActionListener sur ce composant mais lorsque je clique dessus, je n'obtiens pas d'action (j'ai simplement mis une sortie en console).

Voici le code que j'ai créé :
classe Ctrl dans package main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
package main;
 
import frame.MyFrame;
 
public class Ctrl {
 
	public static void main(String[] args) {
		MyFrame frame = new MyFrame("fenetre");
		frame.setVisible(true);
	}
}
classe MyFrame dans package frame :
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
package frame;
 
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.BoundedRangeModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JSlider;
 
import component.MyComponent;
 
public class MyFrame extends JFrame implements ActionListener{
 
	MyComponent comp;
 
	public MyFrame(String title) throws HeadlessException {
		super(title);
 
		buildFrame();
		comp = new MyComponent();
		comp.addActionListener(this);
		add(comp);
	}
 
	private void buildFrame() {
		setSize(1000, 600);
		setLocationRelativeTo(null);	//On centre la fenêtre sur l'écran
		setResizable(false);	//On interdit la redimensionnement de la fenêtre
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//On dit Ã* l'application de se fermer lors du clic sur la croix
	}
 
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("actoion");
		if(e.getSource() == comp){
			System.out.println("cool");
		}
	}
}
et la classe MyComponent dans le package component :
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
package component;
 
import java.awt.Color;
import java.awt.Graphics;
 
import javax.accessibility.Accessible;
import javax.swing.AbstractButton;
import javax.swing.BoundedRangeModel;
import javax.swing.DefaultBoundedRangeModel;
import javax.swing.JComponent;
import javax.swing.SwingConstants;
 
public class MyComponent extends AbstractButton implements Accessible{
 
	private static final long serialVersionUID = -6924489132160787713L;
 
 
	protected BoundedRangeModel sliderModel;
	public MyComponent() {
 
	}
	public MyComponent(int min, int max, int value) {
		super();
        sliderModel = new DefaultBoundedRangeModel(value, 0, min, max);
 
	}
 
	@Override
    public void paintComponent(Graphics g){
		super.paintComponent(g);
		g.setColor(Color.RED);
		int[] xPoints = {30, 40, 60, 40, 40, 30, 20, 20, 0, 20};
		int[] yPoints = {0, 20, 20, 30, 50, 40, 50, 30, 20, 20};
		g.fillPolygon(xPoints, yPoints, 10);
	}
}
Voilà, si quelqu'un peut m'aider à comprendre ... merci