L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
ensuite j'ai un fichier texte qui se nomme : fichierCSH qui est répertorié dans mes documents.donc c'est le fichier que je veux traiter.
le voici :
!/bin/csh -xv
#BSUB -J calmod_POGO_2CU
#BSUB -o calmod_POGO_2CU.o%J
#BSUB -L /bin/csh
umask 002
#----------------------------------------------------------------------
#{TOTO}
# Variables
#----------------------------------------------------------------------
#> should be formatted by calmod_python
set conf_etudie = "{etude}_{SIT}_sylda_{h_sylda}"
set dir_listing = "{userPath}/{etude}/script/{etude}_{SIT}_sylda_{h_sylda}/{conf_cu}/{logName}/{horodate}/listing"
set dir_tem = "{userPath}/{etude}/script/{etude}_{SIT}_sylda_{h_sylda}/{conf_cu}/{logName}/{horodate}/temoin"
set dir_res = "{userPath}/{etude}/script/{etude}_{SIT}_sylda_{h_sylda}/{conf_cu}/{logName}/{horodate}/results"
set dir_UCI_cree = "{userPath}/{etude}/script/{etude}_{SIT}_sylda_{h_sylda}/{conf_cu}/{logName}/{horodate}/UCI_cree"
#< end the formatted line
set fic_tem = calmod.tem
#----------------------------------------------------------------------
# Variables Environnement
#----------------------------------------------------------------------
setenv APPLI calmod_${conf_etudie}
setenv TMPDIR /tmp/${LOGNAME}_$APPLI
setenv DMSDIR /tmp/${LOGNAME}_$APPLI/${LOGNAME}_DMS/
#----------------------------------------------------------------------
# Repertoires temporaires de calcul
#----------------------------------------------------------------------
if ( ! -d $TMPDIR ) then
mkdir $TMPDIR
else
rm -r -f $TMPDIR/*
endif
cd $TMPDIR
setenv PP $$
touch $PP.err
Donc moi quand je clique sur parcourir je choisi ce fichier ci-dessus, j'entre mes différents paramètres, c'est a dire :
et lorsque je lance le programme => Bouton OK
ça échou lol car je n'arrive pas a obtenir les champs qui sont délimités par mes paramètres donnés..
chitt!
Elles étaient dans 2 projets différents tes classes. Les classes d'un projet ne sont pas directement visibles dans un autre projet : on peut le faire de différentes manières, mais ça n'a pas d'intérêt dans ton cas de faire 2 projets.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Bah, c'est normal, ZONE_B et ZONE_E, c'est #< et ># dans le fichier, alors que toi tu as saisies $< et >$ !
Tiens en passant, je vais te donner un petit truc supplémentaire :
ça c'est ton code (un peu près entre la ligne 111 et 129) : j'ai ajouté en surligné jaune la référence aux constantes de l'autre classe, ce qui fait que tu auras les valeurs de ces constantes par ééfaut dans les champs (il faut juste que tu mettes public au lieu de private dans les déclaratios (par exemple publix static final String ZONE_B au lieu private static final String ZONE_B)
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 textField = new JTextField(Finally.ZONE_B); textField.setBounds(116, 112, 86, 20); contentPane.add(textField); textField.setColumns(10); textField_1 = new JTextField(Finally.ZONE_E); textField_1.setBounds(116, 207, 86, 20); contentPane.add(textField_1); textField_1.setColumns(10); textField_2 = new JTextField(Finally.VALUE_B); textField_2.setBounds(116, 145, 86, 20); contentPane.add(textField_2); textField_2.setColumns(10); textField_3 = new JTextField(Finally.VALUE_E); textField_3.setBounds(116, 176, 86, 20); contentPane.add(textField_3); textField_3.setColumns(10);
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Oui lol j'suis con j'viens juste de le remarquer!Bah, c'est normal, ZONE_B et ZONE_E, c'est #< et ># dans le fichier, alors que toi tu as saisies $< et >$ !
tiens j'ai trouver ça aussi :
code de Finally :
Ce que j'ai souligner en jaune était une des erreurs.En fait, il arriver pas a connaître le filename vu que dans extract j'avais mi en paramètre le PATH....
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158 import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Collection; import java.util.LinkedHashSet; public class Finally { private static final String ZONE_B = "#>"; // le début de la sous partie de texte à extraire private static final String ZONE_E = "#<"; // la fin de la sous partie de texte à extraire private static final String VALUE_B = "{"; // le début d'un mot à extraire private static final String VALUE_E = "}"; // la fin d'un mot à extraire private static final String PATH = "fichierCSH.txt"; // le nom du fichier par défaut lu /* On peut passer un paramètre à la méthode main() : * le nom du fichier et s'il n'est pas spécifiée, on utilise PATH. * Cette méthode appelle d'abord extract() * puis split() et affiche les mots distincts trouvés */ public static void main(String[] args) { String path; if ( args.length>0 ) { path = args[0]; } else { path = PATH; } new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, path); } public void traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) { String string = extract(filename, zoneB, zoneE); if (string != null) { Collection<String> mots = split(string, valueB, valueE); for (String mot : mots) { System.out.println(mot); } } else { System.out.println("Aucune chaine trouvée comprise entre " + zoneB + " et " + zoneE); } } /** * Lit le fichier spécifié et extrait la partie située entre ZONE_B et ZONE_E * @param filename nom du fichier * @return la chaîne extraite ou null si aucune chaîne trouvée, ou si le fichier n'existe pas */ private String extract(String filename, String ZONE_B, String ZONE_E) { try { StringBuilder stringBuilder = new StringBuilder(); BufferedReader buff = new BufferedReader(new FileReader(filename)); try { String line; while ((line = buff.readLine()) != null) { stringBuilder.append(line); stringBuilder.append('\n'); } } finally { buff.close(); } String toutLeFichier = stringBuilder.toString(); int a = toutLeFichier.indexOf(ZONE_B); int b = toutLeFichier.indexOf(ZONE_E); if (a >= 0 && b >= 0) { return toutLeFichier.substring(a + ZONE_B.length(), b); } } catch( FileNotFoundException e) { System.err.println("Fichier " + new File(filename).getAbsolutePath() + " introuvable"); } catch (IOException ioe) { System.err.println("Erreur --" + ioe.getMessage()); ioe.printStackTrace(); } return null; } /** * Extrait de la chaîne spécifiée la liste, sans doublons, des mots situés entre VALUE_B et VALUE_E * @param string la chaîne dont on doit extraire les mots * @return la liste de mots extraite */ private Collection<String> split(String string, String VALUE_B, String VALUE_E) { Collection<String> mots = new LinkedHashSet<>(); String[] tab = string.split("\n"); for (int i = 0; i < tab.length; i++) { //System.out.println(i + " : " + tab[i]); int index1 = tab[i].indexOf(VALUE_B); while (index1 >= 0) { int index2 = tab[i].indexOf(VALUE_E, index1); if (index2 >= 0) { int index3 = tab[i].lastIndexOf("{", index2); if (index3 != index1) { System.err .println("Problème dans le fichier : { non fermée en " + index1); } String x = tab[i].substring(index1 + 1, index2); mots.add(x); } else { System.err .println("Problème dans le fichier : { non fermée en " + index1); break; } index1 = tab[i].indexOf(VALUE_B, index2); } // fin de la boucle while } // fin de la boucle for return mots; } }
J'ai renommé mes composants de saisies aussi pour pouvoir me retrouver ( car c'est ça le piège avec le windowbuilder, il aime bien choisir son nommage... )
tiens sinon le code de simplefenetre :
ça marche très bien !! encore merci Joel
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155 import java.awt.BorderLayout; public class simplefenetre extends JFrame { private JPanel contentPane; private static JTextField zoneB; private static JTextField valueE; private static JTextField zoneE; private static JTextField valueB; private JTextField textField_4; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { simplefenetre frame = new simplefenetre(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /* Le constructeur */ public simplefenetre() { // On créer un groupe de boutons . ButtonGroup groupeDeBoutons = new ButtonGroup(); setTitle("Traiter vos fichiers"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); // Button "OK" JButton btnOk = new JButton("OK"); btnOk.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // On lit les 5 champs String ZONE_B = zoneB.getText(); String ZONE_E = zoneE.getText(); String VALUE_B = valueB.getText(); String VALUE_E = valueE.getText(); String PATH = textField_4.getText(); // On appelle la méthode de l'autre classe new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, PATH); } }); // mise en relation du bouton ok avec les deux autres groupeDeBoutons.add(btnOk); btnOk.setBounds(243, 228, 58, 23); contentPane.add(btnOk); // Button "PARCOURIR" JButton btnParcourir = new JButton("PARCOURIR"); btnParcourir.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { browseFile(); // sert au bouton PARCOURIR d'aller chercher un fichier x } }); // mise en relation du bouton PARCOURIR avec les deux autres groupeDeBoutons.add(btnParcourir); btnParcourir.setBounds(304, 56, 120, 23); contentPane.add(btnParcourir); // Button "ANNULER" JButton btnAnnuler = new JButton("ANNULER"); btnAnnuler.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); // mise en relation du bouton ANNULER avec les deux autres groupeDeBoutons.add(btnAnnuler); btnAnnuler.setBounds(311, 228, 113, 23); contentPane.add(btnAnnuler); // On créer les composants de saisies . zoneB = new JTextField(); zoneB.setBounds(116, 112, 86, 20); contentPane.add(zoneB); zoneB.setColumns(10); valueE = new JTextField(); valueE.setBounds(116, 207, 86, 20); contentPane.add(valueE); valueE.setColumns(10); zoneE = new JTextField(); zoneE.setBounds(116, 145, 86, 20); contentPane.add(zoneE); zoneE.setColumns(10); valueB = new JTextField(); valueB.setBounds(116, 176, 86, 20); contentPane.add(valueB); valueB.setColumns(10); JLabel lblNewLabel = new JLabel("VALUE_B "); lblNewLabel.setBounds(10, 179, 86, 14); contentPane.add(lblNewLabel); JLabel lblNewLabel_1 = new JLabel("ZONE_B"); lblNewLabel_1.setBounds(10, 115, 73, 14); contentPane.add(lblNewLabel_1); JLabel lblNewLabel_2 = new JLabel("VALUE_E"); lblNewLabel_2.setBounds(10, 210, 73, 14); contentPane.add(lblNewLabel_2); JLabel lblNewLabel_3 = new JLabel("ZONE_E"); lblNewLabel_3.setBounds(10, 148, 73, 14); contentPane.add(lblNewLabel_3); textField_4 = new JTextField(); textField_4.setBounds(10, 57, 192, 20); contentPane.add(textField_4); textField_4.setColumns(10); } private void browseFile() { JFileChooser fileChooser = new JFileChooser(); fileChooser.setDialogTitle("Choisir le fichier..."); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); fileChooser.setMultiSelectionEnabled(false); if ( !textField_4.getText().isEmpty() ) { // faire bien attention : bien faire correspondre notre textField choisi, ici le textField_4 fileChooser.setSelectedFile(new File(zoneB.getText())); } // il y a plein d'autres méthodes pour customiser le composant (filtre sur les fichiers par exemple) : voir doc. if ( fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION ) { textField_4.setText( fileChooser.getSelectedFile().getAbsolutePath().toString() ); } } }
maintenant je vais créer une fenetre je pense comme sa les résultat serons affiché sur une fenetre et non pas QUE sur la console.. je pense que sa doit être vite fait !
Je viens de voir que tu avais utilisé un ButtonGroup : où est tu allé cherché ça ? Un ButtonGroup, c'est pour gérer des boutons sélectionnables dont on veut qu'il y en ai qu'un seul sélectionné à la fois (comme des radios) : c'est parfaitement inutile pour des boutons pressables.
Accessoirement, ton layout est vraiment moche et pas dynamique, ce qui le rend encore plus moche (les boutons coupés en deux...)
C'est pas plus clean comme ça (essaye de redimensionner la fenêtre) ?
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
J'avais vu sa sur internet, je pensais que sa pouvais être utile...Je viens de voir que tu avais utilisé un ButtonGroup : où est tu allé cherché ça ? Un ButtonGroup, c'est pour gérer des boutons sélectionnables dont on veut qu'il y en ai qu'un seul sélectionné à la fois (comme des radios) : c'est parfaitement inutile pour des boutons pressables.
Oui on va dire c'est plus "simple" plus "clair" lol merciAccessoirement, ton layout est vraiment moche et pas dynamique, ce qui le rend encore plus moche (les boutons coupés en deux...)
C'est pas plus clean comme ça (essaye de redimensionner la fenêtre) ?
Dit moi pour créer ma page qui va afficher mon résultat, c'est dans le même principe mais en plus simple même ?
Je créer une nouvelle classe qui contiendra ma nouvelle fenêtre et le bouton OK sera à modifier ?
C'est un truc dans ce genre là..
En plus simple , comment stocké le résultat console de ma fenetre sur une autre fenetre ( lorsque je clique sur OK) ?
Bah ça dépend un peu de comment tu veux l'afficher : il y a plein de façon de le faire et ça dépend un peu ce qu'on veut en faire après, si on veut en faire quelque chose. C'est quoi le but final d'extraire la liste ? Ce qui peut aussi jouer c'est au final dans le cas réel, combien d'élément on peut avoir à afficher.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Bah pour l'instant il n'y a pas de but final, sa fais parti de mon projet. J'avance petit a petit lolC'est quoi le but final d'extraire la liste ? Ce qui peut aussi jouer c'est au final dans le cas réel, combien d'élément on peut avoir à afficher.
Bah en faite c'est simple, lorsque j'appui sur le bouton OK et bah une autre fenetre apparaît avec le résultat de la console.Bah ça dépend un peu de comment tu veux l'afficher : il y a plein de façon de le faire et ça dépend un peu ce qu'on veut en faire après, si on veut en faire quelque chose.
tu vois ce que je veux dire ou ?
J'ai pensé à creer une autre fenetre normal avec le windowbuilder.
peut être créer une méthode qui va stoké le résultat de la console et appelé cette nouvelle méthode dans le bouton OK.
No ?
Bah, c'est quand même important de savoir où on veut arriver. Tous les chemins mènent à Rome, mais pour aller de Paris à Rôme, on peut passer par Genève et Gennes, ou passer par Reykjavik, Vladivosto, São Paulo, Gaborone, Boston, Leipzig, et enfin Manille. Lorsqu'on fait une application, il vaut mieux avoir des spécifications qui disent ce qu'on veut faire.
Bah, le faire en console c'est déjà une façon de le faire.
Ensuite, pour l'afficher dans une fenêtre, il y a des dizaines de façon de le faire :
- en fenêtre Swing interne
- Dans un JLabel (HTML)
- Dans un JTextPane/JTextArea
- Dans un browser html
- Dans une JList
- Dans une JTable
- en externe,
- On peut créer un fichier texte, et lancer notepad.exe
- On peut créer un fichier html et lancer un browser Internet
- On peut servir une page web en http et lancer un browser Internet
- On peut même faire un PDF et l'afficher
- On peut même créer une console DOS et afficher dedans...
- Etc...
Tout dépend ce qu'on veut faire au final, parce que certaines possiblités sont très rapide à mettre en œuvre mais limitées en possibilités. D'autres permettent de faire pleins de chose au final mais sont beaucoup plus complexe et longue à mettre en œuvre.
Y'a pas besoin de stocker le résultat de la console : celui-ci est produit à partir d'une Collection. On a donc déjà un objet de "stockage".
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
but de mon stage : Le but est de d’améliorer la qualité globale des outils, les rationnaliser et simplifier leur utilisation. Pour cela, le stagiaire aura pour mission de concevoir un framework logiciel d’enchainement de taches. Celui-ci permettra d’automatiser de nombreuses tâches et d’augmenter la qualité. La finalité est de créer une architecture générique pour optimiser les processus.Bah, c'est quand même important de savoir où on veut arriver. Tous les chemins mènent à Rome, mais pour aller de Paris à Rôme, on peut passer par Genève et Gennes, ou passer par Reykjavik, Vladivosto, São Paulo, Gaborone, Boston, Leipzig, et enfin Manille. Lorsqu'on fait une application, il vaut mieux avoir des spécifications qui disent ce qu'on veut faire.
Le stage se déroulera en deux temps, d’abord analyser le besoin et la conception du backend. Celui-ci devra proposer une encapsulation et un paramétrage facile des scripts et outils existants. Ensuite, proposer une ébauche d’interface graphique pour mettre en œuvre et configurer le logiciel.
Donc tout au long du stage j'éxecute les ordres de mon tuteur.Et je pense que c'est surement le début de l'IHM final à réaliser.
D'accord, et le faite de l'afficher dans une autre fenetre, c'est rapidos ou ?ah, le faire en console c'est déjà une façon de le faire.
Ensuite, pour l'afficher dans une fenêtre, il y a des dizaines de façon de le faire :
Je ne vois pas bien le rapport entre l'objectif de ton stage et le programme sur lequel tu as travaillé, qui est tout au plus une moulinette one shot, et très loin du concept de framework générique ! En tout cas cette description ne correspond pas à des spécifications : on ne connait ni les entrées, ni les sorties, ni les acteurs, ni les actions.
Sinon, pour afficher ta liste de valeurs, je t'ai donné, dans l'autre discussion, une façon de faire, une des plus brutes, en terme d'affichage Swing.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Bah si je pense qu'il y a un rapport sinon mes tuteurs ne m'auraît pas dit de faire ça après ce n'est que le début et faut dire que je ne suis pas un as de la POO java!Je ne vois pas bien le rapport entre l'objectif de ton stage et le programme sur lequel tu as travaillé, qui est tout au plus une moulinette one shot, et très loin du concept de framework générique ! En tout cas cette description ne correspond pas à des spécifications : on ne connait ni les entrées, ni les sorties, ni les acteurs, ni les actions.
Oui merci j'ai vu sa mais lorsque j'execute ton code, ce n'est pas ce que je recherche je veux juste pouvoir lire mon résultat de la console sur une fenetre qui s'affiche à part lorsque je clique sur OK.Sinon, pour afficher ta liste de valeurs, je t'ai donné, dans l'autre discussion, une façon de faire, une des plus brutes, en terme d'affichage Swing.
On ne lit pas le résultat de la console dans un fenêtre qui s'affiche : c'est un non sens. Ce qui est parti dans la console n'est pas récupérable. Soit on l'intercepte, ce qui est une façon tordue de le faire, soit on utilise directement ce qu'on envoie dans la console, et on l'affiche dans la fenêtre. Ce que fait exactement le code que je t'ai donné.
Maintenant, le problème c'est que tu n'as pas la moindre base de programmation. Je vais encore être obligé de te macher le boulot :
Dans ton code, tu as une méthode :
Cette méthode crée une collection, qui est affichée dans la sortie standard (System.out). Maintenant, tu as besoin de cette collection pour pouvoir en faire autre chose. Donc il faut la sortir :
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 public void traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) { String string = extract(filename, zoneB, zoneE); if (string != null) { Collection<String> mots = split(string, valueB, valueE); for (String mot : mots) { System.out.println(mot); } } else { System.out.println("Aucune chaine trouvée comprise entre " + zoneB + " et " + zoneE); } }
Et tu changes ta méthode main pour qu'elle continue de faire ce qu'elle faisait avant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public Collection<String> traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) { String string = extract(filename, zoneB, zoneE); if (string != null) { return split(string, valueB, valueE); } else { return null; } }
Et dans ton bouton, tu peux maintenant faire :
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 public static void main(String[] args) { String path; if ( args.length>0 ) { path = args[0]; } else { path = PATH; } Collection<String> mots = new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, path); if (mots != null) { for (String mot : mots) { System.out.println(mot); } } else { System.out.println("Aucune chaine trouvée comprise entre " + ZONE_B + " et " + ZONE_E); } }
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 btnOk.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // On lit les 5 champs String ZONE_B = zoneB.getText(); String ZONE_E = zoneE.getText(); String VALUE_B = valueB.getText(); String VALUE_E = valueE.getText(); String PATH = textField_4.getText(); // On appelle la méthode de l'autre classe Collection<String> mots = new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, PATH); if ( mots!=null ) { JOptionPane.showMessageDialog(null, new JScrollPane(new JList<String>(new Vector<String>(collection)))); } else { JOptionPane.showMessageDialog(null, "Rien trouvé..."); } } });
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Oui c'est vrai mais je compte profiter de ce stage pour bien me former et être opérationnel par la suite.On ne lit pas le résultat de la console dans un fenêtre qui s'affiche : c'est un non sens. Ce qui est parti dans la console n'est pas récupérable. Soit on l'intercepte, ce qui est une façon tordue de le faire, soit on utilise directement ce qu'on envoit dans la console, et on l'affiche dans la fenêtre. Ce que fait exactement le code que je t'ai donné.
Maintenant, le problème c'est que tu n'as pas la moindre base de programmation. Je vais encore être obligé de te macher le boulot :
J'ai remplacé tout ce que tu m'as énumérer ci dessus mais sa ne marche pas du tout
code de simplefenetre:
code de finally :
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165 import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.Collection; import javax.swing.AbstractButton; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; public class simplefenetre extends JFrame { private JPanel contentPane; private static JTextField textField; private static JTextField textField_1; private static JTextField textField_2; private static JTextField textField_3; private JTextField textField_4; private AbstractButton btnOk; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { simplefenetre frame = new simplefenetre(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /* Le constructeur */ public simplefenetre() { setTitle("Traiter vos fichiers"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new GridBagLayout()); // Button "OK" btnOk.addActionListener(new ActionListener() { private AbstractButton zoneB; private AbstractButton zoneE; private AbstractButton valueB; private AbstractButton valueE; public void actionPerformed(ActionEvent arg0) { // On lit les 5 champs String ZONE_B = zoneB.getText(); String ZONE_E = zoneE.getText(); String VALUE_B = valueB.getText(); String VALUE_E = valueE.getText(); String PATH = textField_4.getText(); // On appelle la méthode de l'autre classe Collection<String> mots = new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, PATH); if ( mots!=null ) { JOptionPane.showMessageDialog(null, new JScrollPane(new JList<String>())); } else { JOptionPane.showMessageDialog(null, "Rien trouvé..."); } } }); textField_4 = new JTextField(); contentPane.add(textField_4, new GridBagConstraints(0,0,2,1,1,0,GridBagConstraints.BASELINE_TRAILING, GridBagConstraints.HORIZONTAL, new Insets(2,2,2,2), 0, 0)); // Button "PARCOURIR" JButton btnParcourir = new JButton("PARCOURIR"); btnParcourir.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { browseFile(); // sert au bouton PARCOURIR d'aller chercher un fichier x } }); // On créer les composants de saisies . JLabel zoneBLabel = new JLabel("ZONE_B"); contentPane.add(zoneBLabel, new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.BASELINE_TRAILING, GridBagConstraints.NONE, new Insets(2,2,2,2), 0, 0)); JLabel zoneELabel = new JLabel("ZONE_E"); contentPane.add(zoneELabel, new GridBagConstraints(0,2,1,1,0,0,GridBagConstraints.BASELINE_TRAILING, GridBagConstraints.NONE, new Insets(2,2,2,2), 0, 0)); JLabel valueBLabel = new JLabel("VALUE_B"); contentPane.add(valueBLabel, new GridBagConstraints(0,3,1,1,0,0,GridBagConstraints.BASELINE_TRAILING, GridBagConstraints.NONE, new Insets(2,2,2,2), 0, 0)); JLabel valueELabel = new JLabel("VALUE_E"); contentPane.add(valueELabel, new GridBagConstraints(0,4,1,1,0,0,GridBagConstraints.BASELINE_TRAILING, GridBagConstraints.NONE, new Insets(2,2,2,2), 0, 0)); textField = new JTextField(Finally.ZONE_B); contentPane.add(textField, new GridBagConstraints(1,1,2,1,1,0,GridBagConstraints.BASELINE_LEADING, GridBagConstraints.HORIZONTAL, new Insets(2,2,2,2), 0, 0)); textField_1 = new JTextField(Finally.ZONE_E); contentPane.add(textField_1, new GridBagConstraints(1,2,2,1,1,0,GridBagConstraints.BASELINE_LEADING, GridBagConstraints.HORIZONTAL, new Insets(2,2,2,2), 0, 0)); textField_2 = new JTextField(Finally.VALUE_B); contentPane.add(textField_2, new GridBagConstraints(1,3,2,1,1,0,GridBagConstraints.BASELINE_LEADING, GridBagConstraints.HORIZONTAL, new Insets(2,2,2,2), 0, 0)); textField_3 = new JTextField(Finally.VALUE_E); contentPane.add(textField_3, new GridBagConstraints(1,4,2,1,1,0,GridBagConstraints.BASELINE_LEADING, GridBagConstraints.HORIZONTAL, new Insets(2,2,2,2), 0, 0)); JPanel buttonPane = new JPanel(new FlowLayout(FlowLayout.TRAILING)); contentPane.add(buttonPane, new GridBagConstraints(0, 5, 3, 1, 1, 1, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(2,2,2,2), 0, 0)); buttonPane.add(btnOk); contentPane.add(btnParcourir, new GridBagConstraints(2,0,1,1,0,0,GridBagConstraints.BASELINE_LEADING, GridBagConstraints.NONE, new Insets(2,2,2,2),0,0)); // Button "ANNULER" JButton btnAnnuler = new JButton("ANNULER"); btnAnnuler.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); buttonPane.add(btnAnnuler); } private void browseFile() { JFileChooser fileChooser = new JFileChooser(); fileChooser.setDialogTitle("Choisir le fichier..."); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); fileChooser.setMultiSelectionEnabled(false); if ( !textField_4.getText().isEmpty() ) { // faire bien attention : bien faire correspondre notre textField choisi, ici le textField_4 fileChooser.setSelectedFile(new File(textField.getText())); } // il y a plein d'autres méthodes pour customiser le composant (filtre sur les fichiers par exemple) : voir doc. if ( fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION ) { textField_4.setText( fileChooser.getSelectedFile().getAbsolutePath().toString() ); } } }
code :
Tu vois une erreur toi?
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154 import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Collection; import java.util.LinkedHashSet; public class Finally { // Déclaration des public static final String ZONE_B = "#>"; public static final String ZONE_E = "#<"; public static final String VALUE_B = "{"; public static final String VALUE_E = "}"; public static final String PATH = "fichierCSH.txt"; // La fonction principale : le main public static void main(String[] args) { String path; if ( args.length>0 ) { path = args[0]; } else { path = PATH; } String string = extract(path); if (string != null) { Collection<String> mots = split(string); for (String mot : mots) { System.out.println(mot); } } else { System.out.println("Aucune chaine trouvée comprise entre " + ZONE_B + " et " + ZONE_E); } } /** * * @param filename * @return */ private static String extract(String filename) { try { StringBuilder stringBuilder = new StringBuilder(); BufferedReader buff = new BufferedReader(new FileReader(filename)); try { String line; while ((line = buff.readLine()) != null) { stringBuilder.append(line); stringBuilder.append('\n'); } } finally { buff.close(); } String toutLeFichier = stringBuilder.toString(); int a = toutLeFichier.indexOf(ZONE_B); int b = toutLeFichier.indexOf(ZONE_E); if (a >= 0 && b >= 0) { return toutLeFichier.substring(a + ZONE_B.length(), b); } } catch( FileNotFoundException e) { System.err.println("Fichier " + new File(filename).getAbsolutePath() + " introuvable"); } catch (IOException ioe) { System.err.println("Erreur --" + ioe.getMessage()); ioe.printStackTrace(); } return null; } /** * * @param string * @return */ private static Collection<String> split(String string) { Collection<String> mots = new LinkedHashSet<>(); String[] tab = string.split("\n"); for (int i = 0; i < tab.length; i++) { //System.out.println(i + " : " + tab[i]); int index1 = tab[i].indexOf(VALUE_B); while (index1 >= 0) { int index2 = tab[i].indexOf(VALUE_E, index1); if (index2 >= 0) { int index3 = tab[i].lastIndexOf("{", index2); if (index3 != index1) { System.err .println("Problème dans le fichier : { non fermée en " + index1); } String x = tab[i].substring(index1 + 1, index2); mots.add(x); } else { System.err .println("Problème dans le fichier : { non fermée en " + index1); break; } index1 = tab[i].indexOf(VALUE_B, index2); } // fin de la boucle while } // fin de la boucle for return mots; } public Collection<String> traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) { // TODO } }
Oui. Je ne sais pas comment tu as réussi à te débrouiller pour obtenir ça :
Tu ne vois pas qu'il n'y a qu'un commentaire dans traiterFichier et que, donc, ça risque pas de faire quelque chose, et que le code qui devrait être dans cette méthode a été foutu dans la méthode main().
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155 import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Collection; import java.util.LinkedHashSet; public class Finally { // Déclaration des public static final String ZONE_B = "#>"; public static final String ZONE_E = "#<"; public static final String VALUE_B = "{"; public static final String VALUE_E = "}"; public static final String PATH = "fichierCSH.txt"; // La fonction principale : le main public static void main(String[] args) { String path; if ( args.length>0 ) { path = args[0]; } else { path = PATH; } String string = extract(path); if (string != null) { Collection<String> mots = split(string); for (String mot : mots) { System.out.println(mot); } } else { System.out.println("Aucune chaine trouvée comprise entre " + ZONE_B + " et " + ZONE_E); } } /** * * @param filename * @return */ private static String extract(String filename) { try { StringBuilder stringBuilder = new StringBuilder(); BufferedReader buff = new BufferedReader(new FileReader(filename)); try { String line; while ((line = buff.readLine()) != null) { stringBuilder.append(line); stringBuilder.append('\n'); } } finally { buff.close(); } String toutLeFichier = stringBuilder.toString(); int a = toutLeFichier.indexOf(ZONE_B); int b = toutLeFichier.indexOf(ZONE_E); if (a >= 0 && b >= 0) { return toutLeFichier.substring(a + ZONE_B.length(), b); } } catch( FileNotFoundException e) { System.err.println("Fichier " + new File(filename).getAbsolutePath() + " introuvable"); } catch (IOException ioe) { System.err.println("Erreur --" + ioe.getMessage()); ioe.printStackTrace(); } return null; } /** * * @param string * @return */ private static Collection<String> split(String string) { Collection<String> mots = new LinkedHashSet<>(); String[] tab = string.split("\n"); for (int i = 0; i < tab.length; i++) { //System.out.println(i + " : " + tab[i]); int index1 = tab[i].indexOf(VALUE_B); while (index1 >= 0) { int index2 = tab[i].indexOf(VALUE_E, index1); if (index2 >= 0) { int index3 = tab[i].lastIndexOf("{", index2); if (index3 != index1) { System.err .println("Problème dans le fichier : { non fermée en " + index1); } String x = tab[i].substring(index1 + 1, index2); mots.add(x); } else { System.err .println("Problème dans le fichier : { non fermée en " + index1); break; } index1 = tab[i].indexOf(VALUE_B, index2); } // fin de la boucle while } // fin de la boucle for return mots; } public Collection<String> traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) { [b]// TODO[b] } }
J'ai l'impression que tu es parti d'une très ancienne version et que tu la modifié à moitié en suivant que le tiers des indications que je t'ai donnée. Le pire, je t'ai redonné le code complet de traiterFichier et de main !
Repars de l'ancienne bonne version (celle du dernier post où se trouve Finally) et applique les modifications pas à pas.
Après, il y aura sûrement d'autres modifications à faire, comme par exemple, que l'exception "fichier non trouvé" remonte en dehors de traiterFichier, pour qu'elle s'affiche dans une fenêtre également (utilisation de throws). Mais chaque chose en son temps.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Lol oui exactement, tu trouves toujours les bonnes hypothèses c'est fou.Tu ne vois pas qu'il n'y a qu'un commentaire dans traiterFichier et que, donc, ça risque pas de faire quelque chose, et que le code qui devrait être dans cette méthode a été foutu dans la méthode main().
J'ai l'impression que tu es parti d'une très ancienne version et que tu la modifié à moitié en suivant que le tiers des indications que je t'ai donnée. Le pire, je t'ai redonné le code complet de traiterFichier et de main !
Repars de l'ancienne bonne version (celle du dernier post où se trouve Finally) et applique les modifications pas à pas.
Après, il y aura sûrement d'autres modifications à faire, comme par exemple, que l'exception "fichier non trouvé" remonte en dehors de traiterFichier, pour qu'elle s'affiche dans une fenêtre également (utilisation de throws). Mais chaque chose en son temps.
Nan en faite j'ai suivi ce que tu m'as dit et j'ai fais des erreurs dans mon code donc c'est pour ça que j'ai repris une autre version.. pour pouvoir recommenecer
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager