Un bouton (extends AbstractButton) fait maison n'est pas écouté
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:
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:
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:
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 :)