Bonjour à tous et merci d'avance à ceux qui prendront le temps de réfléchir à mon problème !
Celui-ci est surement assez simple mais je n'arrive malheureusement pas à en trouver la solution.
Je voudrais réaliser une classe "Led" qui étendra JPanel. Cette classe possède un attribut bolléen "allumé" et affiche un cercle dont la couleur dépend de ce parametre.
La classe principal étend JFrame et insere la classe Led. Malheureusement celle-ci ne s'affiche pas. Voici mon code :
- La classe Led :
Cette classe possède aussi des assesseurs non mis par soucis de lisibilité.
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 public class Led extends JPanel{ private Color couleur; private boolean allumé; public Led() { allumé = false; couleur = Color.GREEN; } public void paintComponent(Graphics g){ super.paintComponent(g); if(allumé) g.setColor(couleur); else g.setColor(Color.RED); g.fillOval(0,0,200,200); } }- La classe principale :
Aucun actionListener sur le bouton par soucis de lisibilité.
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 public class Main extends JFrame{ private LedBean led; private JButton bouton; private JTextField texte; public Main() { super("Test de led"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setMinimumSize(new Dimension(400,300)); setLayout(new FlowLayout()); bouton = new JButton("Switch"); led = new LedBean(); add(bouton); add(led); pack(); } public static void main(String[] args) { Main main = new Main(); main.setVisible(true); } }
Quelques observations :
- Lorsqu'on ajoute pas le bouton à la frame et qu'on supprime l'instruction setLayout(new FlowLayout()) la led s'affiche. Par contre dés qu'un layout est précisé ce n'est plus le cas..
Autre question :
- L'instruction "pack()" n'est-elle pas censée calculer la taille optimale de la fenetre dans le cas ou aucune taille n'a été précisée spécifiquement ? Car dans le cas ou la led s'affiche (voir "quelques observations") la fenetre est au démarrage trop petite que pour la voir...
J'espère que vous pourrez m'aider..
Merci d'avance et bonne journée à tous![]()
Partager