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 :
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 package main; import frame.MyFrame; public class Ctrl { public static void main(String[] args) { MyFrame frame = new MyFrame("fenetre"); frame.setVisible(true); } }
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
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"); } } }
Voilà, si quelqu'un peut m'aider à comprendre ... merci
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); } }
Partager