Bonjour,
je voudrais faire une opération fort simple mais qui me complique la vie car ne fonctionne pas.
J'arrive sans problème à supprimer un component du panel courant, et le remplacer par un autre (opérations remove et add). Ca ne pose donc pas de problème.
Je voudrais faire quelque chose de plus compliqué, j'ai une fenêtre donc qui contiendrait deux panels, un de sélection, l'autre d'affichage, et je voudrais donc non plus modifier le contenu du panel courant, mais celui du panel d'affichage. Facile me direz vous ! oui mais ca ne fonctionne pas, et je ne vois pas pourquoi.
J'ai fait un exemple aussi simple que possible ne fonctionnant pas pour vous expliquer le problème, ce code ce trouve dans le constructeur de d'une frame, MyPanel est un classe qui dérive de Panel et que ne fait que définir le getPreferredSize entre autres.
donc logiquement, toutes les 1 secondes, je devrais voir un panel bleu, puis un rouge, puis un vert. Hors je ne vois qu'un panel rouge, puis il s'en va, et je vois donc le fond de mon panel d'affichage (ici blanc) et c'est tout.
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 MyPanel panel = new MyPanel (640,480); panel.setBackground(Color.WHITE); MyPanel panelb = new MyPanel (640,480); panelb.setBackground(Color.BLUE); MyPanel panelr = new MyPanel (640,480); panelr.setBackground(Color.RED); MyPanel panelv = new MyPanel (640,480); panelv.setBackground(Color.GREEN); add(panel); panel.add(panelb); pack(); setLocationRelativeTo(getParent()); setVisible(true); show(); try { Thread.sleep(1000); System.out.println("on passe au rouge"); panel.remove(panelb); panel.add(panelr); } catch (Exception e) {} try { Thread.sleep(1000); System.out.println("on passe au vert"); panel.remove(panelr); panel.add(panelv); } catch (Exception e) {}
Le texte s'affiche bien toutes les 1 secondes, mais c'est tout.
Qu'est ce qu'il manque pour que ca marche ? Je ne vois plus du tout, ca me parait tellement évident que ca devrait marcher que je dois passer à coté de quelque chose !
merci d'avance
[Modéré par Didier]
Ajout de tag dans le titre
Lire les règles du forum : Règles du forum Java
Partager