IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Problème de positionnement de mes composants


Sujet :

AWT/Swing Java

  1. #41
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    code simplefenetre :
    code :

    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
    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 javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    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;
     
     
     
    	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"
    		JButton btnOk = new JButton("OK");
    		btnOk.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {	
    				// On lit les 5 champs 
     
    				String zoneB = textField.getText();
    				String zoneE = textField_1.getText();
    				String valueB = textField_2.getText();
    				String valueE = textField_3.getText();
    				String filename = textField_4.getText();
     
    				// On appelle la méthode de l'autre classe 
    				new Finally().traiterFichier(zoneB, zoneE, valueB, valueE, filename);
     
    			}	
     
    		});
     
    		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 de Finnaly :
    code :
    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
     
    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 {
     
     
    	static final String ZONE_B = "#>"; // le début de la sous partie de texte à extraire
    	static final String ZONE_E = "#<"; // la fin de la sous partie de texte à extraire
    	static final String VALUE_B = "{"; // le début d'un mot à extraire
    	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;
    	}
     
     
     
    }
    => Voilà le code est rétabli, a partir de là je vais suivre tes instructions.

  2. #42
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Re
    J'ai fais exactement ce que tu m'as dit mais j'ai comme même des erreurs au niveau du compilateur :

    code simplefenetre :
    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
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    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 java.util.Vector;
    
    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 static final String PATH = null;
    	private JPanel contentPane;
    	private static JTextField textField;
    	private static JTextField textField_1;
    	private static JTextField textField_2;
    	private static JTextField textField_3;
    	private static String ZONE_B;
    	private static String ZONE_E;
    	private static String VALUE_B;
    	private static String VALUE_E;
    	private JTextField textField_4;
    	private AbstractButton btnOk;
     
     
     
    	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);
    	        }
     
     
    	}
     
    	/* 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 ) {
    		                                           Collection<? extends String> collection = null;
    												JOptionPane.showMessageDialog(null, new JScrollPane(new JList<String>(new Vector<String>(collection))));
    		                                 }
    		                                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 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
    166
    167
    168
    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 {
     
    	
    	static final String ZONE_B = "#>"; // le début de la sous partie de texte à extraire
    	static final String ZONE_E = "#<"; // la fin de la sous partie de texte à extraire
    	static final String VALUE_B = "{"; // le début d'un mot à extraire
    	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().traiterFichier1(ZONE_B, ZONE_E, VALUE_B, VALUE_E, path);	
    	}
     
    	public void traiterFichier1(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;
    	}
    	
    	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;
    	}
     
    }
     
    }
    Output Compilateur :

    Exception in thread "main" java.lang.NullPointerException
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileReader.<init>(Unknown Source)
    at Finally.extract(Finally.java:67)
    at Finally.traiterFichier(Finally.java:158)
    at simplefenetre.main(simplefenetre.java:52)



    PS : en vert, c'est ce qui a été ajouté!

  3. #43
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Euh, où aurais-je dit qu'il fallait créer une méthode appelée traiterFichier1

    Et où aurais-je dit qu'il fallait remplacer le main de simplefenetre par celui de l'ancienne version de Finally ? Quitte à créer un constante initialisée à null (alors que tu as l'exemple dans Finally, ce qui provoque l'exception que tu as (et aucune erreur de compilation pour le coup en ce qui me concerne).

    Là, tu as encore mélanger les 2 classes, en copiant des bouts de l'une dans l'autre, et en dupliquant des bouts.

    Je te redonnes tes classes, les bonnes versions (les dernières que j'ai) :

    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
    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;
     
     
     
    	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"
    		JButton btnOk = new JButton("OK");
    		btnOk.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {	
    				// On lit les 5 champs 
     
    				String zoneB = textField.getText();
    				String zoneE = textField_1.getText();
    				String valueB = textField_2.getText();
    				String valueE = textField_3.getText();
    				String filename = textField_4.getText();
     
    				// On appelle la méthode de l'autre classe 
    				new Finally().traiterFichier(zoneB, zoneE, valueB, valueE, filename);
     
    			}	
     
    		});
     
    		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 : 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
     
     
    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 {
     
     
    	public static final String ZONE_B = "#>"; // le début de la sous partie de texte à extraire
    	public static final String ZONE_E = "#<"; // la fin de la sous partie de texte à extraire
    	public static final String VALUE_B = "{"; // le début d'un mot à extraire
    	public static final String VALUE_E = "}"; // la fin d'un mot à extraire
    	public 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(PATH, 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;
    	}
     
     
     
    }
    Là dedans tu n'as qu'à applique ce qui est dit post 37.

    Il n'y qu'à changer :

    • dans la classe Finally
      • la méthode traiterFichier (elle change pas de nom)
      • sa méthode main
    • dans la classe simple fenêtre : l'appel de la méthode de la classe Finally, dans l'écouteur d'évènements de btnOk


    Ce n'est que du remplacement : il n'y a pas de nouvelles méthodes, ni de nouvelles variables, ou constantes.
    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.

  4. #44
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Euh, où aurais-je dit qu'il fallait créer une méthode appelée traiterFichier1

    Et où aurais-je dit qu'il fallait remplacer le main de simplefenetre par celui de l'ancienne version de Finally ? Quitte à créer un constante initialisée à null (alors que tu as l'exemple dans Finally, ce qui provoque l'exception que tu as (et aucune erreur de compilation pour le coup en ce qui me concerne).

    Là, tu as encore mélanger les 2 classes, en copiant des bouts de l'une dans l'autre, et en dupliquant des bouts.

    Je te redonnes tes classes, les bonnes versions (les dernières que j'ai) :
    Euh des fois ce sont les erreurs qui me font faire sa !! du coup quand c'est souligner en rouge, souvent je met le curseur dessus et je fais des modifications pour justement ne plus à avoir d'erreurs.

    Là dedans tu n'as qu'à applique ce qui est dit post 37.

    Il n'y qu'à changer :

    dans la classe Finally
    la méthode traiterFichier (elle change pas de nom)
    sa méthode main
    dans la classe simple fenêtre : l'appel de la méthode de la classe Finally, dans l'écouteur d'évènements de btnOk



    Ce n'est que du remplacement : il n'y a pas de nouvelles méthodes, ni de nouvelles variables, ou constantes.
    D'accord, je vais faire ça correctement !!

  5. #45
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Tu vas peut être me prendre pour un fou mais il y a toujours une erreur dans le code de simplefenetre! quand j'execute le code j'ai l'ihm etc mais quand j'appui sur OK => erreur

    code erreur :

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at simplefenetre$2.actionPerformed(simplefenetre.java:71)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$300(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)



    Code simplefenetre :
    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
    166
    import java.awt.EventQueue;
    import java.awt.FlowLayout;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.LayoutManager;
    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.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JList;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    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;
     
    	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"
    		JButton btnOk = new JButton("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é...");
    			                                }
     
    						}	
     
    					});	
     
    		// 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));
     
    		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));
     
    		JPanel buttonPane = new JPanel((LayoutManager) 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 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
    166
    167
    168
    169
    170
    171
    172
    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 {
     
     
    	public static final String ZONE_B = "#>"; // le début de la sous partie de texte à extraire
    	public static final String ZONE_E = "#<"; // la fin de la sous partie de texte à extraire
    	public static final String VALUE_B = "{"; // le début d'un mot à extraire
    	public static final String VALUE_E = "}"; // la fin d'un mot à extraire
    	public 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;
    		}
     
                   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);
    	        }
     
     
    	}
     
    	public Collection<String> traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) {
     
            String string = extract(PATH, 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);
    	}
    	return null;
     
    	}
     
    	/**
             * 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;
    	}
     
     
     
    }
    Sinon je pense avoir suivi a la lettre ce que tu m'as dit dans les discutions précédentes.

  6. #46
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    [EDIT] Tu viens de modifier ton message... donc la réponse 1, n'est plus pertinente - corrige la 2 par contre - je regarde pour le reste

    1)

    Dans ton code (pas à la ligne 34, mais 17...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import javax.swing.JList;
    import javax.swing.
    import javax.swing.JFileChooser;
    C'est la ligne du milieu : tu n'a pas l'impression qu'il manque quelque chose là ? (à ce propos Dans Eclipse, CTRL-SHIFT-O te fait les imports automatiques (sauf quand il y a ambiguïté, il te demandera de choisir).

    Si la ligne 34 ne correspond pas, c'est que ce n'est pas le même code : mais il suffit de regarder à la ligne 34 ce qu'il y a : en plus, en cas d'erreur de compilation, il y a une petit icône rouge : quand tu passes la souris dessus, y'a un tooltip qui affiche le message d'erreur. C'est utile les messages d'erreur.


    2)
    Le code que je t'ai indiqué de mettre pour la méthode traiterFichier :

    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;
    	}
     
    }
    Le code que toi tu as mis :

    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
    public Collection<String> traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) {
     
            String string = extract(PATH, 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);
    	}
    	return null;
     
    }
    comment dire ? tu as un éditeur de texte avec une fonction diff ?

    A la limite, ce n'est pas problème que ça ne soit pas exactement mon code, mais

    1. au lieu du paramètre filename, tu utilises la constante PATH de la classe : donc le nom du fichier que tu rentreras dans ton formulaire ne sera pas utilisé, puisqu'il utilisera toujours le nom de fichier qui est dans la constante
    2. quelque soit le résultat de l'extraction, la méthode retourne toujours null : donc, tu auras beau appuyer sur ton bouton, tu ne verras jamais autre chose qu'un message qui affiche "Rien trouvé..." (en passant j'ai mis ce message vite fait, personnellement je m'en fous de ce message - heureusement que je n'ai pas mis "Kamoulox", ou "Sloubi 42 !", histoire de voir la tête de ton tuteur... enfin, tout ça pour dire que le message tu peux mettre ce que tu veux...)



    [EDIT] Donc pour le problème 3 :

    Voici mon code :
    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é...");
                                    }
     
    			}	
     
    		});
    Voici ton code :

    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
    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é...");
    			                                }
     
    						}	
     
    					});
    Alors déjà, y'a quelque chose qui a disparu dans JOptionPane.showMessageDialog(null, new JScrollPane(new JList<String>()));Ensuite, les AbstractButton, c'est quoi ? Le commentaire "// on lit les 5 champs" devrait t'indiquer pourtant ce qu'on est censé faire ici. Alors effectivement, entre temps, comme tu avais tout mélangé le code des 2 classes, je t'ai redonné la dernière version de code à toi que j'avais sous la main (pris dans un post), mais entre temps tu m'avais dit que tu avais renommé les champs avec des noms qui ont un sens : mais évidemment en revenant à une version d'avant, les noms sont redevenus ce qu'ils étaient avant !. Il fallait donc... adapter le code... et/ou l'exemple..... C'est de ça quand je parle d'adaptation.
    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.

  7. #47
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import javax.swing.JList;
    import javax.swing.
    import javax.swing.JFileChooser;
    => je m'en suis aperçu oui et sa a été modifié

    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;
    	}
     
    }
    => Il me semble pas que tu m'ai dit de mettre ce code mais c'est ce que je viens de faire !

    Lors de la compilation toujours une erreur au niveau de ma classe simplefenetre => l70 => String ZONE_B = zoneB.getText();

  8. #48
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    [EDIT] Donc pour le problème 3 :

    Voici mon code :
    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é...");
                                    }
     
    			}	
     
    		});
    Voici ton code :

    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
    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é...");
    			                                }
     
    						}	
     
    					});
    Alors déjà, y'a quelque chose qui a disparu dans JOptionPane.showMessageDialog(null, new JScrollPane(new JList<String>()));Ensuite, les AbstractButton, c'est quoi ? Le commentaire "// on lit les 5 champs" devrait t'indiquer pourtant ce qu'on est censé faire ici. Alors effectivement, entre temps, comme tu avais tout mélangé le code des 2 classes, je t'ai redonné la dernière version de code à toi que j'avais sous la main (pris dans un post), mais entre temps tu m'avais dit que tu avais renommé les champs avec des noms qui ont un sens : mais évidemment en revenant à une version d'avant, les noms sont redevenus ce qu'ils étaient avant !. Il fallait donc... adapter le code... et/ou l'exemple..... C'est de ça quand je parle d'adaptation.
    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.

  9. #49
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Oui j'ai mélanger trop de truc... la pression la fatigue arrf

  10. #50
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par khalous91 Voir le message
    Oui j'ai mélanger trop de truc... la pression la fatigue arrf
    Heureusement que c'est le week-end... autant pour toi...que pour moi
    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.

  11. #51
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Heureusement que c'est le week-end... autant pour toi...que pour moi
    MDR désolé je dois te rendre ouf.
    Mais en même temps sa me rend fou aussi car je veux juste une fenetre qui affiche le contenu de ma console ( apres avoir appuyer sur le bouton OK de mon ihm hein) . sa fais 2jours que j'y passe je n'ai même pas encore réussi.
    tout a l'heure on m'as parler de boîte de dialogue mais ce n'est pas sa que je veux

  12. #52
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par khalous91 Voir le message
    MDR désolé je dois te rendre ouf.
    Mais en même temps sa me rend fou aussi car je veux juste une fenetre qui affiche le contenu de ma console ( apres avoir appuyer sur le bouton OK de mon ihm hein) . sa fais 2jours que j'y passe je n'ai même pas encore réussi.
    tout a l'heure on m'as parler de boîte de dialogue mais ce n'est pas sa que je veux
    Je t'ai dit que ce n'était pas le principe. Y'a pas de console. Il y a une sortie standard qui est redirigée par défaut vers la console : la console de ton environnent Windows, ou la console de ton IDE. Ces consoles sont inaccessibles en Java (enfin pas complètement, mais le faire serait monter une usine à gaz pour faire quelque chose d'absurde).

    Ensuite la sortie standard peut être interceptée, ce qui te permet d'en faire ce que tu en veux. Mais je ne vois pas l'intérêt de faire comme ça alors qu'on peut afficher les résultats de traitement et autres dans une fenêtre de façon plus adaptée, et sans recourir à des moyens absurdes détournés.

    En quoi le fait de voir le résultat de ton traitement et non pas exactement le résultat du traitement que tu affiches dans la console te pose problème

    M'enfin, si tu insistes : donc tu peux intercepter le flux System.out en l'encapsulant dans un PrintStream à toi, ce qui te permet de rediriger ce flux vers ce que tu veux. Donc une JFrame avec un JTextArea par exemple. Pour le code, il te reste à chercher dans la javadoc, car je ne te donnerai pas le code pour le faire.
    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.

  13. #53
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    M'enfin, si tu insistes : donc tu peux intercepter le flux System.out en l'encapsulant dans un PrintStream à toi, ce qui te permet de rediriger ce flux vers ce que tu veux. Donc une JFrame avec un JTextArea par exemple. Pour le code, il te reste à chercher dans la javadoc, car je ne te donnerai pas le code pour le faire.
    C'est ce que me demande mon tuteur c'est pour ça.
    donc ok je créer une autre JFrame dedans je met un JTextArea et pour le code je me démerde lol.
    je vais faire sa ce week end j'éspère réussir.
    mais le principe c'est que la JFrame doit récupérer les résultats de la classe simplefenetre... j'sais pas comment je pourraît faire ça grrrrrrr

  14. #54
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par khalous91 Voir le message
    C'est ce que me demande mon tuteur c'est pour ça.
    Même si ton tuteur n'as jamais fait autre chose que du fortran sur AS400, ou du PL1 sur PDD11, ce n'est pas normal qu'il parle de console : c'est bien un résultat qu'il veut ? Que le résultat s'affiche proprement, lisiblement, complètement, au moins. Sinon, on peut aussi exécuter le programme sous Windows avec la console visible, comme ça tout ce que tu balances dans le System.out sera visible dans une console Windows (ou autre d'ailleurs).
    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.

  15. #55
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Même si ton tuteur n'as jamais fait autre chose que du fortran sur AS400, ou du PL1 sur PDD11, ce n'est pas normal qu'il parle de console : c'est bien un résultat qu'il veut ? Que le résultat s'affiche proprement, lisiblement, complètement, au moins. Sinon, on peut aussi exécuter le programme sous Windows avec la console visible, comme ça tout ce que tu balances dans le System.out sera visible dans une console Windows (ou autre d'ailleurs).
    Oui c'est vrai mais bon il le veut sur une autre JFrame c'est ce que je vais essayer de faire la ce WK

    mais j'ai repris mes codes précédents car ce sont eux qui afficher les résultats qui se rapprochent plus à ce que je cherche

    code simplefenetre :

    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
    166
    167
    168
    169
     
     import java.awt.EventQueue;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
     
    import javax.swing.ButtonGroup;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.border.EmptyBorder;
     
     
    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);
     
    		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);
     
    		valueE = new JTextField("}");
    		valueE.setBounds(116, 207, 86, 20);
    		contentPane.add(valueE);
    		valueE.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() );
    		}
    	}
     
    }
    code 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
    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 {
     
     
    	public static final String ZONE_B = "#>"; // le début de la sous partie de texte à extraire
    	public static final String ZONE_E = "#<"; // la fin de la sous partie de texte à extraire
    	public static final String VALUE_B = "{"; // le début d'un mot à extraire
    	public static final String VALUE_E = "}"; // la fin d'un mot à extraire
    	public 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;
    	}
     
     
     
    }
    Donne moi une petite aide un lien qui va m’intéresser please!!

  16. #56
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Salut

    Comment puis-je faire pour intercepter le flux de sortie system.out ?
    J'ai passer toute l'aprem hier à chercher sur des doc internet mais en vain.. j'ai juste créer une JFrame mais je ne sais pas comment la coder

    La seule chose que j'ai trouvé intéressante est à propos de la classe java.io.PrintStream:
    La classe java.io.PrintStream hérite de la classe java.io.OutputStream, et permet d'afficher tous les types de données sous forme textuelle.

    La sortie standard et l'erreur standard impriment sur la console et sont des instances de la classe java.io.PrintStream.

    Exemple :

    system.out.println("Bonjour !"); // Affiche une chaîne avec retour à la ligne

    int count = 100;
    system.out.print(count); // Affiche un entier sans retour à la ligne
    system.out.print(' '); // Affiche un caractère

    Sa pouraît correspondre à ce que je cherche nan?!

  17. #57
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Re

    Mn tuteur m'as dit que au lieu d'afficher le System.out.println(mot); bah je pouvai le sauvegarder dans une liste et ensuite le re-envoyer à la place de void.... puis dans la classe SimpleFenetre j'appelle ma méthode new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, PATH);
    code 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
    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);
    	}
     
    	}
    Qu'est ce t'en pense ?

  18. #58
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par khalous91 Voir le message
    Qu'est ce t'en pense ?
    Ce que j'en pense, c'est que c'est ce que je te dis de faire depuis je ne sais plus quand :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Collection<String> traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) {
    Qu'est-ce que tu vois là en rouge, void ?
    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.

  19. #59
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Ce que j'en pense, c'est que c'est ce que je te dis de faire depuis je ne sais plus quand :
    J'ai la tête dur, des fois je met trop de temps à comprendre sorry lol

    Qu'est-ce que tu vois là en rouge, void ?
    Non tu renvoi, Collection<String> .

    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
    public Collection<String> traiterFichier(String zoneB, String zoneE, String valueB, String valueE, String filename) {
     
            String string = extract(filename, zoneB, zoneE);   
    
            // JE CRER UNE NOUVELLE LISTE VIDE : 
            ArrayList<String> List = new ArrayList<String>(); 
            
    	if (string != null) {
    		Collection<String> mots = split(string, valueB, valueE);
    		for (String mot : mots) {
    			 
    			// ICI J'importe "mot" a la liste ???
    			
    		}
     
    	} else {
     
    		System.out.println("Aucune chaine trouvée comprise entre " + zoneB
    				+ " et " + zoneE);
    	}
     
    	}
    et dans la classe SimpleFenetre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // 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();
     
    				// JE MODIFIE L APPEL DE LA METHODE ????
    				
    new Finally().traiterFichier(ZONE_B, ZONE_E, VALUE_B, VALUE_E, PATH);
    }
    C'est dans cette optique là ??

  20. #60
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    • arrête de mettre des couleurs dans le code qui rendent illisible le code
    • le code que retourne une collection je te l'ai déjà donné
    • une collection c'est une liste, simplement on ne peut pas accèder à un élément par son indice, mais comme ça sert à rien dans ton cas, une collection suffit
    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.

Discussions similaires

  1. Problème positionnement de trois composants
    Par dark0502 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 29/06/2011, 09h24
  2. Réponses: 6
    Dernier message: 19/02/2008, 19h48
  3. Problème de placement de mes composants et layout
    Par mnemonic78 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 28/10/2007, 16h39
  4. Problème de positionnement avec mes DIV
    Par Rifton007 dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 23/01/2007, 10h48
  5. Réponses: 5
    Dernier message: 13/06/2006, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo