Bonjour,
Je construis actuellement une interface graphique dans laquelle on retrouve trois listes .La première est chargée à partir d'un fichier se trouvant sur le serveur (pas de pb), la seconde est mise à jour par une sélection d'une ligne dans la première liste( pas de pb), la troisième est actualisée par un choix effectué dans la deuxième liste.
C'est sur dernière liste que je rencontre un souci, elle n'est pas mise à jour à chaque sélection dans la deuxième liste.Pourtant l'évènement semble fonctionner correctement car si je teste par un affichage il fonctionne à chaque fois, le problème semble venir de l'alimentation de la liste
Si quelqu'un pouvait me fournir une explication rationnelle .
Voici le code pour la gestion des events des listes :
est voici le code pour le chargement de la troisième liste au moyen de la méthode suivante :
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 public void valueChanged(ListSelectionEvent evt) { if (evt.getSource() == LResuUniv ) { if ( evt.getValueIsAdjusting()) { ChoixResuuniv=(String)LResuUniv.getSelectedValue() ; //System.out.println((String)LResuUniv.getSelectedValue() ) ; } } else if (evt.getSource() == LCombiBase ) { if ( evt.getValueIsAdjusting()) { System.out.println((String)LCombiBase.getSelectedValue()) ; Choixlcombibase=(String)LCombiBase.getSelectedValue() ; Sinstdep=Choixlcombibase.substring(0,6) ; strip1=Choixlcombibase.split(":") ; Shostdep=strip1[1] ; Shostarr=strip1[2] ; cmd2="rsh "+Shostdep+" -l root \"cat /cadnat/save/DS_v6.0.1/log/"+Sinstdep+"/copie_db*|grep \\\"Fin de la procedure Ora_endbackup\\\" |cut -c1-17|tail -10\"" ; System.out.println(cmd2) ; //LResuUniv.removeListSelectionListener(this) ; //cmd2="rsh 156701a001dbs -l root \"cat /cadnat/save/DS_v6.0.1/log/oo2p80/copie_db*|grep \\\"Fin de la procedure Ora_endbackup\\\" |cut -c1-17|tail -10\""; Enveloppe.clear(); LResuUniv.clearSelection () ; Alim_Resu_Univ(cmd2) ; //LResuUniv.addListSelectionListener(this) ; } } }
La troisième liste se nomme Enveloppe.
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 public void Alim_Resu_Univ(String shell) { try { String[] cmdi = { "/bin/sh", "-c", shell }; //String[] cmd = { "/bin/sh", "-c", "ls -rtl /universe_log/CNAM50/exp/log/*PB80PEXJOSV020*|tail -1|cut -d: -f2|cut -c4-" }; //String cmd="/cadnat/ctige/script/java/test.sh" ; Runtime runtime2 = Runtime.getRuntime(); final Process process2 = runtime2.exec(cmdi); // Consommation de la sortie standard de l'application externe dans un Thread separe new Thread() { public void run() { try { BufferedReader reader2 = new BufferedReader(new InputStreamReader(process2.getInputStream())); String line = ""; try { //Enveloppe.clear(); while((line = reader2.readLine()) != null) { // Traitement du flux de sortie de l'application si besoin est //topTextArea.append(line+"\n") ; Enveloppe.addElement(line.substring(0,17)) ; } } finally { reader2.close(); } } catch(IOException ioe) { ioe.printStackTrace(); } } }.start(); // Consommation de la sortie d'erreur de l'application externe dans un Thread separe new Thread() { public void run() { try { BufferedReader reader3 = new BufferedReader(new InputStreamReader(process2.getErrorStream())); String line = ""; try { while((line = reader3.readLine()) != null) { // Traitement du flux d'erreur de l'application si besoin est topTextArea.append("\n"+line+"\n") ; } } finally { reader3.close(); } } catch(IOException ioe) { ioe.printStackTrace(); } } }.start(); } catch(Exception e) { topTextArea.append(e.getMessage()) ; //topTextArea.append(e.printStackTrace()); } }
Merci pour votre réponse
Partager