Bonjour,
je cherche a develloper une appli de gestion de fiche de test, mais je suis bloqué au niveau du graphisme : en effet ma Jframe principale est composées de 3 JPanels : le premier est dédié aux boutons principaux et est lui meme decomposés en 2 JPanels, le second est l'affichage d'un JTree qui me donne la listes de tous mes tests et la dernière est une applet de description du Test. Ces panels sont organisés grace à un gridbaglayout.
maintenant, ce que je voudrais c'est d'une part remplacer le troisième Panel par un 4° lorsque j'appuie sur l'un de mes boutons, et d'autre part changer le contenu de ce panel lorsque je change me deplace dans le Jtree (mais je pense que cela ne posera pas trop de probleme une fois que j'aurais reussi a faire la première partie). pour cela j'ai fait ma fonction paint et j'appelle le repaint lorsque le boutton est cliqué. l'entrée dans la fonction se fait bien et j'arrive bien dans le cas desiré (cf le code ci dessous : au depart je suis dans le cas 0 et au click je passe dans le cas 3)
ce code , qui fait partie de la fonction paint, concerne uniquement l'affichage du 3° panel
cependant, depuis que je passe par cette fonction paint, l'affichage du Jtree ne se fait plus (en fait il est affiché et aussitot remplacé par un JScrollPane vide). de plus, les boutons situés dans le panel du haut sont décalés et se chevauchent une fois que j'ai appuyés sur le bouton. enfin le panel que je veux afficher à la place du 3° n'apparait pas (mais quand je passe en mode plein écran, j'en vois quelques morceau situé sous la 3°)
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 switch(action){ case 0 : System.out.println("je paint et td = "+td+" et cf = "+cf); d = new Dimension(3*df.width/4,df.height - 2*bp.getMaximumSize().height); td.setMaximumSize(d); td.setMinimumSize(d); td.setPreferredSize(d); td.setBorder(BorderFactory.createEtchedBorder()); BuildConstraints(gbc,1,1,3,2,0,0); gbc.fill = GridBagConstraints.BOTH; gbc.insets = new Insets(0, 1, 0, 0); gbl.setConstraints(td,gbc); c.add(td); break; case 1 : break; case 2 : break; case 3 : System.out.println("je repaint et td = "+td+" et cf = "+cf); d = new Dimension(3*df.width/4,df.height - 2*bp.getMaximumSize().height); cf.setMaximumSize(d); cf.setMinimumSize(d); cf.setPreferredSize(d); cf.setBorder(BorderFactory.createEtchedBorder()); BuildConstraints(gbc,1,1,3,2,0,0); gbc.fill = GridBagConstraints.BOTH; gbc.insets = new Insets(0, 1, 0, 0); gbl.setConstraints(cf,gbc); c.add(cf); break; case 4 : break; case 5 : break; }
ma question est donc la suivante : comment effacer le 3° panel et le remplacer par un autre sans casser le reste de l'affichage?
merci d'avance
Partager