Bonjour à tous!
J'ai réalisé une interface graphique pour un programme de dépouillement qui permet de visualiser un certains nombres de paramètres capteurs (sous forme "graphique", cadran et autre, ou stats via jFreeChart) et une partie vidéo. Je précise que je l'ai réalisé sans connaître l'existence de l'EDT et de SwingWorker, ce qui fait que je me retrouve avec une interface "complète" et pas optimisé (voilà c'est dit). Alors plutôt que de déballer mes problèmes d'un coup, je vais essayer de les exposer au fur et à mesure (merci d'avance à ceux qui auront le courage de suivre cette discussion qui risque de durer..)
Donc..Problème n°1
Afin de laisser liberté à l'utilisateur de choisir son agencement, j'ai défini une JFrame qui contient un JPanel qui contient 2 JPanel, fenetreDeGauche et fenetreDeDroite. L'utilisateur peut choisir de "switcher" suivant le schéma suivant:
LE problème c'estr que lors du changement par exemple de celui de gauche, il y a un temps de latence pendans lequel le panel de gauche est décalé vers le haut (sur la barre de menu), celui de droite est totu gris, et puis au bout de qqes secondes tout revient dans l'ordre. Il y a d'autres erreurs possibles comme des"traces" du Panel précédent etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 graphique et video => par defaut graphique et stats video et stats etc... (il y a impossiblité d'avoir deux mêmes visu en même temps)
Voici le code de changement de Panel:
Sachant que ecrans est tel que:
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 public void changementFenetre(String a,int b, int c){ final String cote=a; final int precedent=b; final int nouveau=c; if(cote.compareTo("droite")==0){ fenetreDroite.remove(ecrans[precedent]); fenetreDroite.add(ecrans[nouveau]); fenetreDroite.revalidate(); } else{ fenetreGauche.remove(ecrans[precedent]); fenetreGauche.add(ecrans[nouveau]); fenetreGauche.revalidate(); } repaint(); System.out.println("Changement effectué"); }
Voilà, j'espère que mon problème est clair...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 this.ecrans[1]=this.tableauDeBord; this.ecrans[2]=this.getJPanelVideo(); this.ecrans[0]=this.getTableauDeStatistiques(); //ce sont tous des JPanel
Merci







Répondre avec citation




Partager